home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / inter36a.zip / INTERRUP.A < prev    next >
Text File  |  1993-08-01  |  357KB  |  9,482 lines

  1. Interrupt List        Release 36ß            Last change 8/1/93
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------!---FILELIST-------------------------
  4. Please redistribute the following files unmodified as a group, in a trio of
  5. archives named INTER36A through INTER36C (preferably the original authenticated
  6. PKZIP archives):
  7.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8.     INTERRUP.A    INT 00 through INT 14     \
  9.     INTERRUP.B    INT 15 through INT 15      \
  10.     INTERRUP.C    INT 16 through INT 21/41   \   total 1302 pages at
  11.     INTERRUP.D    INT 21/42 through INT 21/7F \  60 lines per page,
  12.     INTERRUP.E    INT 21/80 through INT 21/FF  \ 1394 with INTPRINT -p
  13.     INTERRUP.F    INT 22 through INT 2F/7F     / (5573 entries)
  14.     INTERRUP.G    INT 2F/80 through INT 2F/FF /
  15.     INTERRUP.H    INT 30 through INT 5F       /
  16.     INTERRUP.I    INT 60 through INT 67      /
  17.     INTERRUP.J    INT 68 through INT FF     /
  18.     INTERRUP.PRI    a brief introduction to interrupts
  19.     INTPRINT.COM    a simple formatter that also generates a list summary
  20.     INTPRINT.DOC    instructions for INTPRINT
  21.     86BUGS.LST    a listing of CPU bugs and undocumented features
  22.     CMOS.LST    a description of the CMOS RAM data bytes
  23.     GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
  24.     MEMORY.LST    format of the BIOS data area
  25.     PORTS.LST    a listing of I/O ports
  26.     COMBINE.BAT    combine the pieces of the list into a single file
  27. The following files should be distributed in an archive called INTER36D:
  28.     INT.COM        invoke interrupts from commandline
  29.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  30.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  31.     INT2QH.*    program to convert list into QuickHelp database
  32.     INTERVUE.EXE    indexed interrupt list browser
  33.     INTHELP.*    convert list into TurboPower GUIDE database
  34.     INTLIST.E    Epsilon extension for handling list
  35.     INTLIST.ICO    Windows icon for INTERVUE
  36.     INTPRINT.C    source code for INTPRINT
  37.     RB2NG.*        convert list into Norton Guides database
  38. --------!---CONTACT_INFO---------------------
  39. If you notice any mistakes or omissions, please let me know!  It is only with
  40. YOUR help that the list can continue to grow at the current rate.  Please send
  41. all changes to me rather than distributing a modified version of the list.
  42.  
  43. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  44. that they have already been addressed.
  45.  
  46.      Ralf Brown
  47.  
  48. Internet: ralf@telerama.pgh.pa.us
  49. UUCP: {uunet,harvard}!telerama.pgh.pa.us!ralf
  50. FIDO: Ralf Brown 1:129/26.1
  51.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  52.     unless you address it to me)
  53. CIS:  >INTERNET:ralf@telerama.pgh.pa.us
  54.  
  55. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  56. because of bad return paths.  If you don't get a response from me within a
  57. reasonable period of time, send it again with a better return path (starting at
  58. harvard or ucbvax for UUCP, from the ARPA Internet for others).
  59. --------!------------------------------------
  60. See INTERRUP.1ST for the key to system abbreviations and a list of the
  61. trademarks mentioned here.
  62. --------!---DISCLAIMER-----------------------
  63. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  64. contained in this list to the best of my ability, but I cannot be held
  65. responsible for any problems caused by use or misuse of the information,
  66. especially for those functions not officially  documented.  If it is marked
  67. "internal" or undocumented, you should check it carefully to make sure it
  68. works the same way in your version of the software (and please let me know
  69. whether or not it works the same way).    Information marked with "???" is
  70. known to be incomplete or guesswork.
  71. --------!---FLAGS----------------------------
  72. The use of -> instead of = signifies that the indicated register or register
  73. pair contains a pointer to the specified item, rather than the item itself.
  74. One or more letters may follow the interrupt number; they have the following
  75. meanings:  U - undocumented function, u - partially documented function,
  76. P - available only in protected mode, R - available only in real or V86 mode,
  77. C - callout or callback (usually hooked rather than called),
  78. O - obsolete (no longer present in current versions)
  79. --------!---CATEGORIES-----------------------
  80. The ninth column of the divider line preceding an entry usually contains a
  81. classification code (the entry has not been classified if that character is
  82. a dash).  The codes currently in use are:
  83.     A - applications, a - access software (screen readers, etc),
  84.     B - BIOS, b - vendor-specific BIOS extensions,
  85.     C - CPU-generated, c - caches/spoolers,
  86.     D - DOS kernel, d - disk I/O enhancements,
  87.     E - DOS extenders, e - electronic mail, F - FAX,
  88.     f - file manipulation, G - debuggers/debugging tools,
  89.     H - hardware, h - vendor-specific hardware,
  90.     I - IBM workstation/terminal emulators,
  91.     J - Japanese, j - joke programs,
  92.     K - keyboard enhancers, k - file compression,
  93.     l - shells/command interpreters,
  94.     M - mouse/pointing device, m - memory management,
  95.     N - network, O - other operating systems,
  96.     P - printer enhancements, p - power management,
  97.     Q - DESQview/TopView and Quarterdeck programs,
  98.     R - remote control/file access, r - runtime support,
  99.     S - serial I/O, s - sound/speech,
  100.     T - DOS-based task switchers/multitaskers, t - TSR libraries
  101.     U - resident utilities, u - emulators,
  102.     V - video, v - virus/antivirus,
  103.     W - MS Windows, X - expansion bus BIOSes,
  104.     y - security, * - reserved (& not otherwise classified)
  105. --------C-00---------------------------------
  106. INT 00 - CPU-generated - DIVIDE ERROR
  107. Desc:    generated if the divisor of a DIV or IDIV instruction is zero or the
  108.       quotient overflows the result register; DX and AX will be unchanged.
  109. Notes:    on an 8086/8088, the return address points to the following instruction
  110.     on an 80286+, the return address points to the divide instruction
  111.     an 8086/8088 will generate this interrupt if the result of a division
  112.       is 80h (byte) or 8000h (word)
  113. SeeAlso: INT 04
  114. --------G-00---------------------------------
  115. INT 00 - Zenith - ROM DEBUGGER
  116. Desc:    invokes the ROM Debugger when at the BIOS level; equivalent to
  117.       pressing Ctrl-Alt-Ins on booting.
  118. Note:    since DOS revectors INT 00, it is necessary to restore this vector to
  119.       its original ROM BIOS value in order to invoke the debugger once DOS
  120.       loads
  121. SeeAlso: INT 03"Columbia"
  122. --------C-01---------------------------------
  123. INT 01 - CPU-generated - SINGLE STEP
  124. Desc:    generated after each instruction if TF (trap flag) is set; TF is
  125.       cleared on invoking the single-step interrupt handler
  126. Notes:    interrupts are prioritized such that external interrupts are invoked
  127.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  128.       first instruction of the handler executes
  129.     used by debuggers for single-instruction execution tracing, such as
  130.       MS-DOS DEBUG's T command
  131. SeeAlso: INT 03
  132. --------C-01---------------------------------
  133. INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  134. Desc:    generated by the CPU on various occurrences which may be of interest
  135.       to a debugger program
  136. Note:    events which may trigger the interrupt:
  137.       Instruction address breakpoint fault - will return to execute inst
  138.       Data address breakpoint trap - will return to following instruction
  139.       General detect fault, debug registers in use
  140.       Task-switch breakpoint trap
  141.       undocumented 386/486 opcode F1h - will return to following instruc
  142. SeeAlso: INT 03
  143. --------H-02---------------------------------
  144. INT 02 - external hardware - NON-MASKABLE INTERRUPT
  145. Desc:    generated by the CPU when the input to the NMI pin is asserted
  146. Notes:    return address points to start of interrupted instruction on 80286+
  147.     on the 80286+, further NMIs are disabled until the next IRET
  148.       instruction, but one additional NMI is remembered by the hardware
  149.       and will be serviced after the IRET instruction reenables NMIs
  150.     maskable interrupts may interrupt the NMI handler if interrupts are
  151.       enabled
  152.     although the Intel documentation states that this interrupt is
  153.       typically used for power-failure procedures, it has many other uses
  154.       on IBM-compatible machines:
  155.         Memory parity error: all except Jr, CONV, and some machines
  156.                 without memory parity
  157.         Breakout switch on hardware debuggers
  158.         Coprocessor interrupt: all except Jr and CONV
  159.         Keyboard interrupt: Jr, CONV
  160.         I/O channel check: CONV, PS50+
  161.         Disk-controller power-on request: CONV
  162.         System suspend: CONV
  163.         Real-time clock: CONV
  164.         System watch-dog timer, time-out interrupt: PS50+
  165.         DMA timer time-out interrupt: PS50+
  166.         Low battery: HP 95LX
  167.         Module pulled: HP 95LX
  168. --------C-03---------------------------------
  169. INT 03 - CPU-generated - BREAKPOINT
  170. Desc:    generated by the one-byte breakpoint instruction (opcode CCh)
  171. Notes:    used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G
  172.       command
  173.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  174.     return address points to byte following the breakpoint instruction
  175. SeeAlso: INT 01
  176. --------G-03---------------------------------
  177. INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER
  178. Desc:    invokes the ROM Debugger if INT 03 has not been revectored; equivalent
  179.       to pressing Esc on booting.
  180. SeeAlso: INT 00"Zenith"
  181. --------G-030910-----------------------------
  182. INT 03 - Soft-ICE - BACK DOOR COMMANDS - DISPLAY STRING IN Soft-ICE WINDOW
  183.     AX = 0910h
  184.     SI = magic value 4647h ('FG')
  185.     DI = magic value 4A4Dh ('JM')
  186.     DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  187. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  188. --------G-030911-----------------------------
  189. INT 03 - Soft-ICE - BACK DOOR COMMANDS - EXECUTE Soft-ICE COMMAND
  190.     AX = 0911h
  191.     SI = magic value 4647h ('FG')
  192.     DI = magic value 4A4Dh ('JM')
  193.     DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  194. --------G-030912-----------------------------
  195. INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET BREAKPOINT INFORMATION
  196.     AX = 0912h
  197.     SI = magic value 4647h ('FG')
  198.     DI = magic value 4A4Dh ('JM')
  199. Return: BH = entry number of last breakpoint set
  200.     BL = type of last breakpoint set
  201.         00h BPM (breakpoint register types)
  202.         01h I/O
  203.         02h INTerrupt
  204.         03h BPX (INT 03h-style breakpoint)
  205.         04h reserved
  206.         05h range
  207.     DH = entry number of last breakpoint to be triggered
  208.     DL = type of last triggered breakpoint (see above)
  209. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  210. SeeAlso: AX=0913h,AX=0914h
  211. --------G-030913-----------------------------
  212. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - SET Soft-ICE BREAKPOINT
  213.     AX = 0913h
  214.     SI = magic value 4647h ('FG')
  215.     DI = magic value 4A4Dh ('JM')
  216.     DS:DX -> breakpoint structure (see below)
  217. Return: AX = status
  218.         00h successful
  219.         BX = breakpoint number
  220.         03h breakpoint table full
  221.         06h memory limit error
  222.         07h I/O limit error
  223.         09h range limit error
  224.         16h duplicate breakpoint
  225. SeeAlso: AX=0312h,AX=0314h
  226.  
  227. Format of breakpoint structure:
  228. Offset    Size    Description
  229.  00h    BYTE    breakpoint type (see below)
  230.  01h    DWORD    breakpoint address 1
  231.         (lower range limit for memory BPs, interrupt # for interrupt
  232.         BPs, address of BP for execution BPs, I/O address (only word)
  233.         for I/O BPs)
  234.  05h    DWORD    breakpoint address 2
  235.         (upper range limit for memory BPs,
  236.         optional value to check for for interrupt BPs,
  237.         overlay number (0 = root) for execution BPs)
  238.  09h    DWORD    breakpoint address 3
  239.  0Dh    BYTE    breakpoint mode 1 (see below)
  240.         (for interrupt BPs = register to check
  241.              00h  no value checking
  242.              01h  check AL
  243.              02h  check AH
  244.              03h  check AX)
  245.  0Eh    BYTE    breakpoint mode 2 (see below)
  246.  0Fh    BYTE    breakpoint size (00h byte, 01h word, 03h dword)
  247.  10h    BYTE    breakpoint pass count before program stop
  248.  11h    BYTE    breakpoint state
  249. Note:    all unused fields should contain zeros
  250.  
  251. Values for breakpoint type:
  252.  00h    memory location
  253.  01h    memory range
  254.  03h    I/O
  255.  04h    interrupt
  256.  05h    execution break
  257.  
  258. Values for breakpoint mode:
  259.  01h    read
  260.  02h    write
  261.  04h    execution
  262. --------G-030914-----------------------------
  263. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - REMOVE Soft-ICE BREAKPOINT
  264.     AX = 0914h
  265.     SI = magic value 4647h ('FG')
  266.     DI = magic value 4A4Dh ('JM')
  267.     BX = breakpoint number (returned by AX=0913h)
  268. Return: BX = ???
  269. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  270. SeeAlso: AX=0912h,AX=0913h
  271. --------C-04---------------------------------
  272. INT 04 - CPU-generated - INTO DETECTED OVERFLOW
  273. Desc:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  274.       is set; otherwise, INTO is effectively a NOP
  275. Note:    may be used for convenient overflow testing (to prevent errors from
  276.       propagating) instead of JO or a JNO/JMP combination
  277. SeeAlso: INT 00
  278. --------B-05---------------------------------
  279. INT 05 - PRINT SCREEN
  280. Desc:    dump the current text screen to the first printer
  281. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  282.       may be invoked directly by applications
  283.     byte at 0050h:0000h contains status used by default handler
  284.       00h not active
  285.       01h PrtSc in progress
  286.       FFh last PrtSc encountered error
  287.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  288. SeeAlso: INT 10/AH=12h/BL=20h
  289. --------C-05---------------------------------
  290. INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  291. Desc:    generated by BOUND instruction when the value to be tested is less than
  292.       the indicated lower bound or greater than the indicated upper bound.
  293. Note:    returning from this interrupt re-executes the failing BOUND instruction
  294. --------P-05454A-----------------------------
  295. INT 05 U - PSPS v2.01 - EJECT PAGE
  296.     AX = 454Ah ('EJ')
  297. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  298.       Technologies
  299. Note:    sends a ^D to the current printer
  300. SeeAlso: AX=4E57h,AX=5053h,AX=554Eh
  301. --------P-054E57-----------------------------
  302. INT 05 U - PSPS v2.01 - SET PARAMETERS
  303.     AX = 4E57h ('NW')
  304.     ES:SI -> 11-byte buffer containing new settings
  305. Return: buffer filled
  306. SeeAlso: AX=454Ah,AX=5053h,INT 17/AH=63h
  307. --------P-055053-----------------------------
  308. INT 05 U - PSPS v2.01 - GET PARAMETERS
  309.     AX = 5053h ('PS')
  310.     ES:SI -> 11-byte buffer containing new settings
  311. SeeAlso: AX=4E57h,AX=554Eh,INT 17/AH=64h
  312. --------P-05554E-----------------------------
  313. INT 05 U - PSPS v2.01 - UNINSTALL
  314.     AX = 554Eh ('UN')
  315. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  316.       Technologies
  317. SeeAlso: AX=454Ah,AX=4E57h,INT 17/AH=62h
  318. --------C-06---------------------------------
  319. INT 06 - CPU-generated (80286+) - INVALID OPCODE
  320. Desc:    this interrupt is generated when the CPU attempts to execute an
  321.       invalid opcode (most protected-mode instructions are considered
  322.       invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
  323.       which specifies a register rather than a memory address
  324. Notes:    return address points to beginning of invalid instruction
  325.     with proper programming, this interrupt may be used to emulate
  326.       instructions which do not exist; many 386 BIOSes emulate the 80286
  327.       undocumented LOADALL instruction which was removed from the 80386+
  328.     generated by the 80386+ when the LOCK prefix is used with instructions
  329.       other than BTS, BTR, BTC, XCHG, XADD (486), CMPXCHG (486), INC, DEC,
  330.       NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, or XOR, or any instruction
  331.       not accessing memory.
  332. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  333. --------b-06---------------------------------
  334. INT 06 C - HP 95LX - SLEEP/WAKEUP
  335. Desc:    this interrupt is called just before going into light or deep
  336.       (shutdown) sleep and just after returning from light or deep sleep
  337. SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
  338. --------C-07---------------------------------
  339. INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  340. Desc:    this interrupt is automatically called if a coprocessor instruction is
  341.       encountered when no coprocessor is installed
  342. Note:    can be used to emulate a numeric coprocessor in software
  343. SeeAlso: INT 09"MATH UNIT PROTECTION"
  344. --------H-08---------------------------------
  345. INT 08 - IRQ0 - SYSTEM TIMER
  346. Desc:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  347.       this interrupt is used to keep the time-of-day clock updated
  348. Notes:    programs which need to be invoked regularly should use INT 1C unless
  349.       they need to reprogram the timer while still keeping the time-of-day
  350.       clock running at the proper rate
  351.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  352.     may be masked by setting bit 0 on I/O port 21h
  353. SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70,INT 78"GO32"
  354. SeeAlso: INT D8"Screen Thief"
  355. --------C-08---------------------------------
  356. INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  357. Desc:    called when multiple exceptions occur on one instruction, or an
  358.       exception occurs in an exception handler
  359. Notes:    called in protected mode if an interrupt above the defined limit of
  360.       the interrupt vector table occurs
  361.     return address points at beginning of instruction with errors or the
  362.       beginning of the instruction which was about to execute when the
  363.       external interrupt caused the exception
  364.     if an exception occurs in the double fault handler, the CPU goes into
  365.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  366.       this "triple fault" is a faster way of returning to real mode on
  367.       many 80286 machines than the standard keyboard controller reset
  368. --------H-09---------------------------------
  369. INT 09 - IRQ1 - KEYBOARD DATA READY
  370. Desc:    this interrupt is generated when data is received from the keyboard.
  371.       This is normally a scan code (from either a keypress *or* a key
  372.       release), but may also be an ACK or NAK of a command on AT-class
  373.       keyboards.
  374. Notes:    this IRQ may be masked by setting bit 1 on I/O port 21h
  375.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  376.       INT 15/AH=4Fh after reading the scan code from the keyboard and
  377.       before further processing; all further processing uses the scan
  378.       code returned from INT 15/AH=4Fh
  379.     the default interrupt handler is at F000h:E987h in 100%-compatible
  380.       BIOSes
  381.     the interrupt handler performs the following actions for certain
  382.       special keystrokes:
  383.         Ctrl-Break     clear keyboard buffer, place word 0000h in buffer,
  384.              invoke INT 1B, and set flag at 0040h:0071h
  385.         SysRq     invoke INT 15/AH=85h
  386.         Ctrl-Numlock place system in a tight wait loop until next INT 09
  387.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  388.                destination of the jump at that address)
  389.         Shift-PrtSc     invoke INT 05
  390.     DRDOS hooks this interrupt to control the cursor shape (underscore/
  391.       half block) for overwrite/insert mode
  392.     DR Multiuser DOS hooks this interrupt for cursor shape control and to
  393.       control whether Ctrl-Alt-Del reboots the current session or the
  394.       entire system
  395. SeeAlso: INT 05,INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B
  396. SeeAlso: INT 2F/AX=A901h,INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
  397.  
  398. Values for scan code:
  399.  01h    Esc         31h    N
  400.  02h    1 !         32h    M
  401.  03h    2 @         33h    , <         63h    F16
  402.  04h    3 #         34h    . >         64h    F17
  403.  05h    4 $         35h    / ?         65h    F18
  404.  06h    5 %         36h    Right Shift     66h    F19
  405.  07h    6 ^         37h    Grey*         67h    F20
  406.  08h    7 &         38h    Alt         68h    F21
  407.  09h    8 *         39h    SpaceBar     69h    F22
  408.  0Ah    9 (         3Ah    CapsLock     6Ah    F23
  409.  0Bh    0 )         3Bh    F1         6Bh    F24
  410.  0Ch    - _         3Ch    F2         6Ch    --
  411.  0Dh    = +         3Dh    F3         6Dh    EraseEOF
  412.  0Eh    Backspace     3Eh    F4
  413.  0Fh    Tab         3Fh    F5         6Fh    Copy/Play
  414.  10h    Q         40h    F6
  415.  11h    W         41h    F7
  416.  12h    E         42h    F8         72h    CrSel
  417.  13h    R         43h    F9
  418.  14h    T         44h    F10         74h    ExSel
  419.  15h    Y         45h    NumLock         75h    --
  420.  16h    U         46h    ScrollLock     76h    Clear
  421.  17h    I         47h    Home
  422.  18h    O         48h    UpArrow
  423.  19h    P         49h    PgUp
  424.  1Ah    [ {         4Ah    Grey-
  425.  1Bh    ] }         4Bh    LeftArrow
  426.  1Ch    Enter         4Ch    Keypad 5
  427.  1Dh    Ctrl         4Dh    RightArrow
  428.  1Eh    A         4Eh    Grey+
  429.  1Fh    S         4Fh    End
  430.  20h    D         50h    DownArrow     E0h    prefix code
  431.  21h    F         51h    PgDn         E1h    prefix code
  432.  22h    G         52h    Ins         FAh    ACK
  433.  23h    H         53h    Del         FEh    RESEND
  434.  24h    J         54h    SysRq         FFh    kbd error/buffer full
  435.  25h    K
  436.  26h    L         56h    left \| (102-key)
  437.  27h    ; :         57h    F11
  438.  28h    ' "         58h    F12
  439.  29h    ` ~
  440.  2Ah    Left Shift     5Ah    PA1
  441.  2Bh    \ |         5Bh    F13
  442.  2Ch    Z         5Ch    F14
  443.  2Dh    X         5Dh    F15
  444.  2Eh    C
  445.  2Fh    V
  446.  30h    B
  447. Note:    scan codes 56h-E1h are only available on the extended (101/102-key)
  448.       keyboard and Host Connected (122-key) keyboard; scan codes 5Ah-76h
  449.       are only available on the 122-key keyboard
  450. --------C-09---------------------------------
  451. INT 09 - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
  452. Desc:    called if the coprocessor attempts to access memory outside a segment
  453.       boundary; it may occur at an arbitrary time after the coprocessor
  454.       instruction was issued
  455. Note:    until the condition is cleared or the coprocessor is reset, the only
  456.       coprocessor instruction which may be used is FNINIT; WAIT or other
  457.       coprocessor instructions will cause a deadlock because the
  458.       coprocessor is still busy waiting for data
  459. SeeAlso: INT 07"CPU"
  460. --------*-09---------------------------------
  461. INT 09 P - internal hardware - RESERVED BY Intel (80486)
  462. Note:    this exception has been moved to INT 0D
  463. SeeAlso: INT 09"MATH",INT 0D
  464. --------H-0A---------------------------------
  465. INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  466. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  467.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  468.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  469.       connects to the slave 8259.  The BIOS redirects the interrupt for
  470.       IRQ9 back here.
  471.     under DESQview, only the INT 15h vector and BASIC segment address (the
  472.       word at 0000h:0510h) may be assumed to be valid for the handler's
  473.       process
  474.     many VGA boards do not implement the vertical retrace interrupt,
  475.       including the IBM VGA Adapter where the traces are either cut or
  476.       removed
  477. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  478. --------H-0A---------------------------------
  479. INT 0A - IRQ2 - Tandy 1000-series HARD DISK
  480. Note:    may be masked by setting bit 2 on I/O port 21h
  481. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  482. --------H-0A---------------------------------
  483. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  484. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  485.       a jumper-selectable IRQ, but software and hardware generally defaults
  486.       to IRQ2
  487. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  488. --------C-0A---------------------------------
  489. INT 0A P - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
  490. Desc:    automatically called during a task switch if the new TSS specified by
  491.       the task gate is invalid for any of the following reasons:
  492.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  493.         LDT selector invalid or segment not present
  494.         null SS selector, or SS selector outside LDT/GDT limit
  495.         stack segment is read-only
  496.         stack segment DPL differs from new CPL, or RPL <> CPL
  497.         CS selector is outside LDT/GDT limit or not code
  498.         non-conforming code segment's DPL differs from CPL
  499.         conforming code segment's DPL > CPL
  500.         DS/ES selectors outside LDT/GDT limit or not readable segments
  501. Note:    the handler must use a task gate in order to have a valid TSS under
  502.       which to execute; it must also reset the busy bit in the new TSS
  503. SeeAlso: INT 0B"CPU"
  504. --------H-0B---------------------------------
  505. INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  506. Desc:    automatically asserted by the UART when COM2 needs attention, if the
  507.       UART has been programmed to generate interrupts
  508. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  509.       alternate
  510.     on PS/2s, COM2 through COM8 share this interrupt; on many PC's, COM4
  511.       shares this interrupt
  512.     may be masked by setting bit 3 on I/O port 21h
  513. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
  514. --------C-0B---------------------------------
  515. INT 0B P - CPU-generated (80286+) - SEGMENT NOT PRESENT
  516. Desc:    generated when loading a segment register if the segment descriptor
  517.       indicates that the segment is not currently in memory, unless the
  518.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  519.       INT 0C"CPU") needed by a task switch
  520. Note:    may be used to implement virtual memory by loading in segments as they
  521.       are accessed, clearing the "not present" bit after loading
  522. SeeAlso: INT 0A"CPU",INT 0E"hardware"
  523. --------h-0B---------------------------------
  524. INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
  525. Desc:    this is the lowest-level keyboard handler on an HP 95LX palmtop
  526. Note:    debounces key, places the keycode in I/O register 60h, and calls INT 09
  527. SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
  528. --------H-0C---------------------------------
  529. INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  530. Desc:    automatically asserted by the UART when COM1 needs attention, if the
  531.       UART has been programmed to generate interrupts
  532. BUG:    this vector is modified but not restored by Direct Access v4.0, and
  533.       may be left dangling by other programs written with the same version
  534.       of compiled BASIC
  535. Notes:    on many PC's, COM3 shares this interrupt
  536.     may be masked by setting bit 4 on I/O port 21h
  537. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
  538. --------C-0C---------------------------------
  539. INT 0C - CPU-generated (80286+) - STACK FAULT
  540. Desc:    this interrupt is generated in protected mode on a stack overflow or
  541.       underflow, or if an inter-level transition or task switch references
  542.       a stack segment marked "not present"; it is generated in real mode
  543.       on accessing a word operand at SS:FFFFh
  544. Note:    the 80286 will shut down in real mode if SP=1 before a push.  On the
  545.       PC AT and compatibles, external circuitry generates a reset on
  546.       shutdown.
  547. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  548. --------I-0C---------------------------------
  549. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  550. Desc:    the IBM System 36/38 emulator may be invoked through a private API,
  551.       whose entry point address is offset 100h in the segment pointed at
  552.       by this vector
  553.  
  554. Call the API entry point with
  555.     AH = function
  556.         03h update screen
  557.         05h select next session
  558.         AL = session number (00h-03h)
  559.         Return: AL = session type code
  560.                 00h not active
  561.                 01h display session
  562.                 02h printer session
  563.                 FEh invalid session number
  564.             DS = requested session's data segment (0 if not active)
  565. Return: ???
  566.  
  567. Format of emulator's data area (offset from interrupt handler's segment):
  568. Offset    Size    Description
  569. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  570.         last zerod
  571. 13Fh    BYTE    bit flags for status line indicators turned off since this
  572.         byte last set to FFh
  573. 140h    WORD    offset of EBCDIC to ASCII translation
  574. 146h    WORD    offset of EBCDIC screen buffer
  575. 148h    WORD    offset of EC (engineering change) level signature
  576. 150h    BYTE    "KEYI"
  577. 151h    BYTE    5250 key scan code to be sent to remote
  578. 15Bh    BYTE    "SYSAV"
  579. 15Dh    BYTE    5250 cursor column
  580. 15Eh    BYTE    5250 cursor row
  581. 167h    BYTE    "DVCTAD"
  582. 178h    BYTE    "FLAGS"
  583. 184h    BYTE    "SESSNOAD"
  584. 193h    BYTE    "STNAD"
  585. 198h    BYTE    "NSDS"
  586. --------H-0D---------------------------------
  587. INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  588. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  589.       word at 0000h:0510h) may be assumed to be valid for the handler's
  590.       process
  591.     may be masked by setting bit 5 on I/O port 21h
  592. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  593. SeeAlso: INT 7D"GO32"
  594. --------H-0D---------------------------------
  595. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  596. Desc:    used to ensure that the dynamic RAM retains its contents
  597. SeeAlso: INT 55
  598. --------h-0D---------------------------------
  599. INT 0D - HP 95LX - INFRARED INTERRUPT
  600. Desc:    this interrupt is used to perform communications over the infrared
  601.       data link
  602. SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
  603. --------C-0D---------------------------------
  604. INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  605. Desc:    the CPU generates this interrupt when it detects a protection violation
  606.       which does not fit under any other category having a separate
  607.       interrupt
  608. Notes:    called in real mode when
  609.         an instruction accesses a memory operand extending beyond offset
  610.           FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment
  611.           CS, DS, ES, FG, or GS
  612.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  613.           in the second byte
  614.         an instruction exceeds the maximum length allowed (10 bytes for
  615.           80286, 15 bytes for 80386/80486)
  616.         an instruction wraps from offset FFFFh to offset 0000h
  617.     called in protected mode on protection violations not covered by INT 06
  618.       through INT 0C, including
  619.         segment limit violations
  620.         write to read-only segments
  621.         accesses using null DS or ES selectors
  622.         accesses to segments with privilege greater than CPL
  623.         wrong descriptor type
  624.     called on 80486 protected-mode floating-point protection fault
  625. SeeAlso: INT 09"80486",INT 0C"STACK"
  626. --------H-0E---------------------------------
  627. INT 0E - IRQ6 - DISKETTE CONTROLLER
  628. Desc:    this interrupt is generated by the floppy disk controller on
  629.       completion of an operation
  630. Notes:    default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  631.     may be masked by setting bit 6 on I/O port 21h
  632. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
  633. --------C-0E---------------------------------
  634. INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
  635. Desc:    this interrupt is generated in protected and virtual-86 modes on
  636.       attempting to access a 4K memory page whose page table entry has
  637.       the "present" bit cleared
  638. Note:    used to implement virtual memory
  639. SeeAlso: INT 0B"hardware"
  640. --------h-0E---------------------------------
  641. INT 0E - HP 95LX - EXTERNAL CARD INTERRUPT
  642. SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
  643. --------H-0F---------------------------------
  644. INT 0F - IRQ7 - PARALLEL PRINTER
  645. Desc:    this interrupt is generated by the LPT1 printer adapter when the
  646.       printer becomes ready
  647. Notes:    most printer adapters do not reliably generate this interrupt
  648.     the 8259 interrupt controller generates an interrupt corresponding to
  649.       IRQ7 when an error condition occurs
  650. SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
  651. --------h-0F---------------------------------
  652. INT 0F - HP 95LX - REAL-TIME CLOCK
  653. SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70
  654. --------C-10---------------------------------
  655. INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
  656. Desc:    this interrupt is generated by the CPU when the -ERROR pin is asserted
  657.       by the coprocessor
  658. Note:    AT's and clones usually wire the coprocessor to use IRQ13, but not all
  659.       get it right
  660. SeeAlso: INT 09"hardware",INT 75
  661. --------V-1000-------------------------------
  662. INT 10 - VIDEO - SET VIDEO MODE
  663.     AH = 00h
  664.     AL = mode (see below)
  665. Return: AL = video mode flag (Phoenix BIOS)
  666.         20h mode > 7
  667.         30h modes 0-5 and 7
  668.         3Fh mode 6
  669.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  670. Desc:    specify the display mode for the currently active display adapter
  671. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  672.       (EGA or higher only)
  673.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  674.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
  675.       Everex EV-673
  676.     the installation check for Ahead adapters is the signature "AHEAD" at
  677.       C000h:0025h
  678.     the installation check for Paradise adapters is the signature "VGA=" at
  679.       C000h:007Dh
  680.     the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
  681.       signature "OAK VGA" at C000h:0008h
  682.     the installation check for ATI adapters is the signature "761295520" at
  683.       C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
  684.         31h for 18800
  685.         32h for 18800-1
  686.         33h for 18800-2
  687.         34h for 18800-4
  688.         35h for 18800-5
  689.       the two bytes at C000h:0040h indicate the adapter type
  690.         "22" EGA Wonder
  691.         "31" VGA Wonder
  692.         "32" EGA Wonder800+
  693.       the byte at C000h:0042h contains feature flags
  694.         bit 1: mouse port present
  695.         bit 4: programmable video clock
  696.       the byte at C000h:0044h contains additional feature flags if chipset
  697.         byte > 30h (see below)
  698.     the installation check for Genoa video adapters is the signature
  699.       77h XXh 99h 66h at C000h:NNNNh, where NNNNh is stored at C000h:0037h
  700.       and XXh is
  701.         00h for Genoa 6200/6300
  702.         11h for Genoa 6400/6600
  703.         22h for Genoa 6100
  704.         33h for Genoa 5100/5200
  705.         55h for Genoa 5300/5400
  706.       for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
  707.       for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
  708.         "EXTMODE", indicating support for extended modes
  709. SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
  710. SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h
  711. Index:    installation check;Tseng ET4000|installation check;Ahead video cards
  712. Index:    installation check;Oak Technologies|installation check;ATI video cards
  713. Index:    installation check;Paradise video|installation check;Genoa video cards
  714.  
  715. Bitfields for ATI additional feature flags:
  716.  bit 0    70 Hz non-interlaced display
  717.  bit 1    Korean (double-byte) characters
  718.  bit 2    45 MHz memory clock rather than 40 MHz
  719.  bit 3    zero wait states
  720.  bit 4    paged ROMs
  721.  bit 6    no 8514/A monitor support
  722.  bit 7    HiColor DAC
  723.  
  724. Values for video mode:
  725.       text/ text pixel     pixel    colors    disply    scrn  system
  726.       grph resol  box    resoltn        pages    addr
  727.  00h = T   40x25  8x8        16gray       8    B800 CGA,PCjr
  728.      = T   40x25  8x14        16gray       8    B800 EGA
  729.      = T   40x25  8x16          16       8    B800 MCGA
  730.      = T   40x25  9x16          16       8    B800 VGA
  731.  01h = T   40x25  8x8          16       8    B800 CGA,PCjr
  732.      = T   40x25  8x14          16       8    B800 EGA
  733.      = T   40x25  8x16          16       8    B800 MCGA
  734.      = T   40x25  9x16          16       8    B800 VGA
  735.  02h = T   80x25  8x8        16gray       4    B800 CGA,PCjr
  736.      = T   80x25  8x14        16gray       4    B800 EGA
  737.      = T   80x25  8x16          16       4    B800 MCGA
  738.      = T   80x25  9x16          16       4    B800 VGA
  739.  03h = T   80x25  8x8          16       4    B800 CGA,PCjr
  740.      = T   80x25  8x14          16       4    B800 EGA
  741.      = T   80x25  8x16          16       4    B800 MCGA
  742.      = T   80x25  9x16          16       4    B800 VGA
  743.  04h = G   40x25  8x8    320x200       4        B800 CGA,PCjr,EGA,MCGA,VGA
  744.  05h = G   40x25  8x8    320x200     4gray        B800 CGA,PCjr,EGA
  745.      = G   40x25  8x8    320x200       4        B800 MCGA,VGA
  746.  06h = G   80x25  8x8    640x200       2        B800 CGA,PCjr,EGA,MCGA,VGA
  747.  07h = T   80x25  9x14         mono      var    B000 MDA,Hercules,EGA
  748.      = T   80x25  9x16         mono        B000 VGA
  749.  08h = T  132x25  8x8          16        B800 ATI EGA/VGA Wonder [2]
  750.      = T  132x25  8x8         mono        B000 ATI EGA/VGA Wonder [2]
  751.      = G   20x25  8x8    160x200      16             PCjr, Tandy 1000
  752.      = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  753.      = G   90x45  8x8         mono        B000 Hercules + HERKULES [11]
  754.  09h = G   40x25  8x8    320x200      16             PCjr
  755.  0Ah = G   80x25  8x8    640x200       4             PCjr, Tandy 1000
  756.  0Bh =     reserved (used internally by EGA BIOS)
  757.      = G        640x200      16             Tandy 1000 SL/TL
  758.  0Ch =     reserved (used internally by EGA BIOS)
  759.  0Dh = G   40x25  8x8    320x200      16       8    A000 EGA,VGA
  760.  0Eh = G   80x25  8x8    640x200      16       4    A000 EGA,VGA
  761.  0Fh = G   80x25  8x14    640x350     mono       2    A000 EGA,VGA
  762.  10h = G   80x25  8x14    640x350       4       2    A000 64k EGA
  763.      = G        640x350      16        A000 256k EGA,VGA
  764.  11h = G   80x30  8x16    640x480     mono        A000 VGA,MCGA,ATI EGA,ATI VIP
  765.  12h = G   80x30  8x16    640x480     16/256k    A000 VGA,ATI VIP
  766.      = G   80x30  8x16    640x480     16/64        A000 ATI EGA Wonder
  767.      = G        640x480      16             UltraVision+256K EGA
  768.  13h = G   40x25  8x8    320x200 256/256k    A000 VGA,MCGA,ATI VIP
  769.  14h = T  132x25  Nx16          16             XGA, IBM Enhanced VGA [3]
  770.      = T  132x25  8x16 1056x400     16/256k         Cirrus CL-GD5420/5422/5426
  771.      = G   80x25  8x8    640x200                 Lava Chrome II EGA
  772.      = G        640x400      16             Tecmar VGA/AD
  773.  15h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  774.  16h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  775.      = G        800x600      16             Tecmar VGA/AD
  776.  17h = T  132x25                     Tecmar VGA/AD
  777.      = T   80x43  8x8    640x350      16       4    B800 Tseng ET4000 BIOS [10]
  778.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  779.  18h = T   80x30  9x16    720x480      16       1    A000 Realtek RTVGA [12]
  780.      = T  132x25         mono        B000 Cirrus 5320 chipset
  781.      = T  132x44  8x8         mono        B000 Tseng Labs EVA
  782.      = T  132x44  9x8  1188x352      4gray       2    B000 Tseng ET3000 chipset
  783.      = T  132x44  8x8         16/256       2    B000 Tseng ET4000 chipset
  784.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  785.      = G           1024x768      16             Tecmar VGA/AD
  786.  19h = T   80x43  9x11    720x473      16       1    A000 Realtek RTVGA [12]
  787.      = T  132x25  8x14         mono        B000 Tseng Labs EVA
  788.      = T  132x25  9x14 1188x350      4gray       4    B000 Tseng ET3000 chipset
  789.      = T  132x25  8x14         16/256       4    B000 Tseng ET4000 chipset
  790.      = T  132x34         mono        B000 Cirrus 5320 chipset
  791.  1Ah = T   80x60  9x8    720x480      16       1    A000 Realtek RTVGA [12]
  792.      = T  132x28  8x13         mono        B000 Tseng Labs EVA
  793.      = T  132x28  9x13 1188x364      4gray       4    B000 Tseng ET3000 chipset
  794.      = T  132x28  8x13         16/256       4    B000 Tseng ET4000 chipset
  795.      = T  132x44         mono        B000 Cirrus 5320 chipset
  796.      = G        640x350     256             Tecmar VGA/AD
  797.  1Bh = T  132x25  9x14 1188x350      16       1    A000 Realtek RTVGA [12]
  798.      = G        640x400     256             Tecmar VGA/AD
  799.  1Ch = T  132x25                     Cirrus 5320 chipset
  800.      = T  132x30  9x16 1188x480      16       1    A000 Realtek RTVGA [12]
  801.      = G        640x480     256             Tecmar VGA/AD
  802.  1Dh = T  132x43                     Cirrus 5320 chipset
  803.      = T  132x43  9x11 1188x473      16       1    A000 Realtek RTVGA [12]
  804.      = G        800x600     256             Tecmar VGA/AD
  805.  1Eh = T  132x44                     Cirrus 5320 chipset
  806.      = T  132x60  9x8  1188x480      16       1    A000 Realtek RTVGA [12]
  807.  1Fh = G  100x75  8x8    800x600      16       1    A000 Realtek RTVGA
  808.  20h = G        240x128            B000 HP 95LX
  809.      = G  120x45  8x16    960x720      16       1    A000 Realtek RTVGA
  810.  21h = T  132x60          16       2    B800 Tseng ET4000 chipset [10]
  811.      = T  132x44  9x9  1188x396     16/256k    B800 WD90C
  812.      = T  132x44  9x9          16        B800 Diamond Speedstar 24X
  813.      = G   80x43  8x8    720x348     mono        B000 DESQview 2.x+Hercules [4]
  814.      = G  128x48  8x16 1024x768      16       1    A000 Realtek RTVGA [12]
  815.  22h = T  132x43                     Allstar Peacock (VGA)
  816.      = T  132x44  8x8                     Tseng Labs EVA
  817.      = T  132x44  9x8  1188x352     16/256k   2    B800 Tseng ET3000 chipset
  818.      = T  132x44  8x8         16/256k   2    B800 Tseng ET4000 chipset
  819.      = T  132x44  8x8                     Ahead Systems EGA2001
  820.      = T  132x44  8x8          16       2    B800 Ahead B
  821.      = T  132x44          16             Orchid Prodesigner VGA
  822.      = G   80x43  8x8    720x348     mono        B800 DESQview 2.x+Hercules [4]
  823.      = G   96x64  8x16    768x1024  16       1    A000 Realtek RTVGA
  824.  23h = T  132x25  6x14                     Tseng Labs EVA
  825.      = T  132x25  9x14 1188x350     16/256k   4    B800 Tseng ET3000 chipset
  826.      = T  132x25  8x14         16/256       4    B800 Tseng ET4000 chipset
  827.      = T  132x25  8x14                     Ahead Systems EGA2001
  828.      = T  132x25  8x14          16       4    B800 Ahead B
  829.      = T  132x25  8x8          16        B800 ATI EGA Wonder,ATI VIP
  830.      = T  132x25                     Cirrus 5320 chipset
  831.      = T  132x28                     Allstar Peacock (VGA)
  832.      = T  132x28          16             Orchid Prodesigner VGA
  833.      = G  128x48  8x16 1024x768       4       1    A000 Realtek RTVGA
  834.  24h = T  132x25                     Allstar Peacock (VGA)
  835.      = T  132x25          16             Orchid Prodesigner VGA
  836.      = T  132x28  6x13                     Tseng Labs EVA
  837.      = T  132x28  9x13 1188x364     16/256k   4    B800 Tseng ET3000 chipset
  838.      = T  132x28  8x13         16/256k   4    B800 Tseng ET4000 chipset
  839.      = T  132x28  8x12          16       1    B800 Ahead B
  840.      = T  132x28                     Cirrus 5320 chipset
  841.      = G   64x32  8x16    512x512     256       1    A000 Realtek RTVGA
  842.  25h = G   80x60  8x8    640x480                 Tseng Labs EVA
  843.      = G   80x60  8x8    640x480     16/256k   1    A000 Tseng ET3000/4000 chipset
  844.      = G        640x480      16             VEGA VGA
  845.      = G   80x60  8x8    640x480      16        A000 Orchid Prodesigner VGA
  846.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 26h)
  847.      = G        640x480      16             NEC GB-1
  848.      = G        640x480      16             Cirrus 5320 chipset
  849.      = G        640x400     256             Realtek RTVGA
  850.  26h = T   80x60  8x8                     Tseng Labs EVA
  851.      = T   80x60  8x8    640x480     16/256k   3    B800 Tseng ET3000/4000 chipset
  852.      = T   80x60                     Allstar Peacock (VGA)
  853.      = T   80x60          16             Orchid ProDesigner VGA
  854.      = G   80x60  8x8    640x480                 Ahead Systems EGA2001
  855.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 25h)
  856.      = G        640x480     256             Realtek RTVGA
  857.  27h = T  132x25  8x8         mono        B000 ATI EGA Wonder,ATI VIP
  858.      = G        720x512      16             VEGA VGA
  859.      = G        720x512      16             Genoa
  860.      = G  100x75  8x8    800x600     256       1    A000 Realtek RTVGA [12]
  861.  28h = T  ???x???                     VEGA VGA
  862.      = G           1024x768     256             Realtek RTVGA (1meg)
  863.  29h = G        800x600      16             VEGA VGA
  864.      = G  100x37  8x16    800x600      16        A000 Orchid
  865.      = G        800x600      16        A000 STB,Genoa,Sigma
  866.      = G        800x600      16             Allstar Peacock (VGA)
  867.      = G  100x37  8x16    800x600     16/256k   1    A000 Tseng ET3000/4000 chipset
  868.      = G        800x600     ???             EIZO MDB10
  869.      = G        800x600      16             Cirrus 5320 chipset
  870.      = G           1024x1024 256             Realtek RTVGA BIOS v3.C10
  871.  2Ah = T  100x40                     Allstar Peacock (VGA)
  872.      = T  100x40  8x16          16             Orchid Prodesigner VGA
  873.      = T  100x40  8x15    800x600     16/256k   4    B800 Tseng ET3000/4000 chipset
  874.      = G           1280x1024  16             Realtek RTVGA
  875.  2Dh = G        640x350     256             VEGA VGA
  876.      = G        640x350 256/256k    A000 Orchid, Genoa, STB
  877.      = G   80x25  8x14    640x350 256/256k   1    A000 Tseng ET3000/4000 chipset
  878.      = G        640x350     256             Cirrus 5320 chipset
  879.  2Eh = G        640x480     256             VEGA VGA
  880.      = G   80x30  8x16    640x480 256/256k    A000 Orchid
  881.      = G        640x480 256/256k    A000 STB,Genoa,Sigma
  882.      = G   80x30  8x16    640x480 256/256k   1    A000 Tseng ET3000/4000 chipset
  883.  2Fh = T  160x50  8x8  1280x400      16       4    B800 Ahead B (Wizard/3270)
  884.      = G        720x512     256             VEGA VGA
  885.      = G        720x512     256             Genoa
  886.      = G   80x25  8x16    640x400 256/256k   1    A000 Tseng ET4000 chipset
  887.  30h = G        800x600     256             VEGA VGA
  888.      = G  100x37  8x16    800x600 256/256k    A000 Orchid
  889.      = G        800x600 256/256k    A000 STB,Genoa,Sigma
  890.      = G        720x350       2             3270 PC
  891.      = G        800x600     256             Cardinal
  892.      = G        ???x???            B800 AT&T 6300
  893.      = G  100x37  8x16    800x600 256/256k   1    A000 Tseng ET3000/4000 chipset
  894.  32h = T   80x34  8x10          16       4    B800 Ahead B (Wizard/3270)
  895.  33h = T  132x44  8x8          16        B800 ATI EGA Wonder,ATI VIP
  896.      = T   80x34  8x8          16       4    B800 Ahead B (Wizard/3270)
  897.  34h = T   80x66  8x8          16       4    B800 Ahead B (Wizard/3270)
  898.  36h = G        960x720      16             VEGA VGA
  899.      = G        960x720      16             STB
  900.      = G        960x720      16             Tseng ET3000 only
  901.  37h = T  132x44  8x8         mono        B800 ATI EGA Wonder,ATI VIP
  902.      = G           1024x768      16             VEGA VGA
  903.      = G  128x48  8x16 1024x768      16        A000 Orchid
  904.      = G           1024x768      16        A000 STB,Genoa,Sigma
  905.      = G           1024x768      16             Definicon
  906.      = G  128x48  8x16 1024x768      16       1    A000 Tseng ET3000/4000 chipset
  907.  38h = G           1024x768     256             STB VGA/EM-16 Plus (1MB)
  908.      = G  128x48  8x16 1024x768 256/256k   1    A000 Tseng ET4000 chipset
  909.      = G           1024x768     256             Orchid ProDesigner II
  910.  3Dh = G           1280x1024  16             Definicon
  911.      = G  128x64  8x16 1280x1024  16       1    A000 Tseng ET4000 v3.00 [1,7]
  912.  3Eh = G           1280x961      16             Definicon
  913.  40h = T   80x43                     VEGA VGA, Tecmar VGA/AD
  914.      = T   80x43                     Video7 V-RAM VGA
  915.      = T   80x43                     Tatung VGA
  916.      = T  100x30          16             MORSE VGA
  917.      = T  100x30                     Cirrus 510/520 chipset
  918.      = T   80x25    720x350     mono             Genoa SuperEGA BIOS 3.0+
  919.      = G   80x25  8x16    640x400       2       1    B800 AT&T 6300, AT&T VDC600
  920.      = G   80x25  8x16    640x400       2       1    B800 Compaq Portable
  921.  41h = T  132x25                     VEGA VGA
  922.      = T  132x25                     Tatung VGA
  923.      = T  132x25                     Video7 V-RAM VGA
  924.      = T  100x50          16             MORSE VGA
  925.      = T  100x50                     Cirrus 510/520 chipset
  926.      = T   80x34  9x14    720x476     16/256k    B800 WD90C
  927.      = T   80x34  9x14          16        B800 Diamond Speedstar 24X
  928.      = G        640x200      16       1         AT&T 6300
  929.      = G   80x25    720x348     mono        B000 Genoa SuperEGA BIOS 3.0+
  930.  42h = T  132x43                     VEGA VGA
  931.      = T  132x43                     Tatung VGA
  932.      = T  132x43                     Video7 V-RAM VGA
  933.      = T   80x34  9x10           4       4    B800 Ahead B (Wizard/3270)
  934.      = T  100x60          16             MORSE VGA
  935.      = T  100x60                     Cirrus 510/520 chipset
  936.      = G   80x25  8x16    640x400      16             AT&T 6300, AT&T VDC600
  937.      = G   80x25    720x348     mono        B800 Genoa SuperEGA BIOS 3.0+
  938.  43h = T   80x60                     VEGA VGA
  939.      = T   80x60                     Tatung VGA
  940.      = T   80x60                     Video7 V-RAM VGA
  941.      = T   80x45  9x8           4       4    B800 Ahead B (Wizard/3270)
  942.      = T  100x75          16             MORSE VGA
  943.      = T   80x29    720x348     mono             Genoa SuperEGA BIOS 3.0+
  944.      = G         640x200 of 640x400 viewport     AT&T 6300 (unsupported)
  945.  44h =     disable VDC and DEB output             AT&T 6300
  946.      = T  100x60                     VEGA VGA
  947.      = T  100x60                     Tatung VGA
  948.      = T  100x60                     Video7 V-RAM VGA
  949.      = T   80x32    720x352     mono             Genoa SuperEGA BIOS 3.0+
  950.  45h = T  132x28                     Tatung VGA
  951.      = T  132x28                     Video7 V-RAM VGA
  952.      = T   80x44    720x352     mono             Genoa SuperEGA BIOS 3.0+
  953.  46h = T  132x25  8x14         mono             Genoa 6400
  954.      = T  132x25  9x14         mono             Genoa SuperEGA BIOS 3.0+
  955.      = G  100x40  8x15    800x600       2             AT&T VDC600
  956.  47h = T  132x29  8x12         mono             Genoa 6400
  957.      = T  132x29  9x12         mono             Genoa SuperEGA BIOS 3.0+
  958.      = T  132x28  9x16 1188x448     16/256k    B800 WD90C
  959.      = T  132x28  9x16          16        B800 Diamond Speedstar 24X
  960.      = G  100x37  8x16    800x600      16             AT&T VDC600
  961.  48h = T  132x32  8x12         mono             Genoa 6400
  962.      = T  132x32  9x11         mono             Genoa SuperEGA BIOS 3.0+
  963.      = G   80x50  8x8    640x400       2        B800 AT&T 6300, AT&T VDC600
  964.  49h = T  132x44  8x8         mono             Genoa 6400
  965.      = T  132x44  9x8         mono             Genoa SuperEGA BIOS 3.0+
  966.      = G   80x30  8x16    640x480                 Lava Chrome II EGA
  967.  4Dh = T  120x25                     VEGA VGA
  968.  4Eh = T  120x43                     VEGA VGA
  969.      = T   80x60  8x8         16/256k    B800 Oak OTI-067/OTI-077 [8]
  970.  4Fh = T  132x25                     VEGA VGA
  971.      = T  132x60                     some Oak Tech VGA [8]
  972.  50h = T   80x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  973.      = T   80x34                     Lava Chrome II EGA
  974.      = T   80x43         mono             VEGA VGA
  975.      = T  132x25  9x14         mono             Ahead Systems EGA2001
  976.      = T  132x25  9x14           4       4    B800 Ahead B
  977.      = T  132x25  8x14          16       8    B800 OAK Technologies VGA-16
  978.      = T  132x25  8x14         16/256k    B800 Oak OTI-037/067/077 [8]
  979.      = T  132x25  8x14 1056x350      16       8    B800 UM587 chipset
  980.      = T  132x30          16             MORSE VGA
  981.      = T  132x30                     Cirrus 510/520 chipset
  982.      = G   80x30  8x16    640x480      16             Paradise EGA-480
  983.      = G   80x30  8x16    640x480      16             NEL Electronics BIOS
  984.      = G        640x480     mono???         Taxan 565 EGA
  985.      = G   40x25  8x8    320x200                 Genoa SuperEGA BIOS 3.0+
  986.  51h = T   80x30  8x16                     Paradise EGA-480
  987.      = T   80x30  9x16                     NEL Electronics BIOS
  988.      = T   80x30                     Lava Chrome II EGA
  989.      = T   80x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  990.      = T  132x25         mono             VEGA VGA
  991.      = T  132x28  9x12           4       4    B800 Ahead B
  992.      = T  132x43  8x8          16       5    B800 OAK Technologies VGA-16
  993.      = T  132x43  8x8        16/256k        B800 Oak OTI-037/067/077
  994.      = T  132x43  8x8  1056x344      16       5    B800 UM587 chipset
  995.      = T  132x50          16             MORSE VGA
  996.      = T  132x50                     Cirrus 510/520 chipset
  997.      = G   80x34  8x14    640x480      16             ATI EGA Wonder
  998.      = G   80x25  8x8    640x200                 Genoa SuperEGA BIOS 3.0+
  999.  52h = T   80x60                     Lava Chrome II EGA
  1000.      = T   80x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  1001.      = T  132x43         mono             VEGA VGA
  1002.      = T  132x44  9x8         mono             Ahead Systems EGA2001
  1003.      = T  132x44  9x8           4       2    B800 Ahead B
  1004.      = T  132x60          16             MORSE VGA
  1005.      = T  132x60                     Cirrus 510/520 chipset
  1006.      = G   94x29  8x14    752x410      16             ATI EGA Wonder
  1007.      = G  100x75  8x8    800x600      16       1    A000 OAK Technologies VGA-16
  1008.      = G  100x75  8x8    800x600      16        A000 Oak OTI-037 chipset [8]
  1009.      = G  100x37  8x16    800x600      16        A000 Oak OTI-067/077 chips [8]
  1010.      = G  100x75  8x8    800x600      16        A000 UM587 chipset
  1011.      = G  128x30  8x16 1024x480      16             NEL Electronics BIOS
  1012.  53h = T   80x25  8x16                     NEL Electronics BIOS
  1013.      = T   80x60          16             MORSE VGA
  1014.      = T   80x60                     Cirrus 510/520 chipset
  1015.      = T  132x25  8x14         16/256k    B800 Trident TVGA 8800/8900
  1016.      = T  132x43                     Lava Chrome II EGA
  1017.      = G        640x480     256             Oak VGA
  1018.      = G   80x30  8x16    640x480     256        A000 Oak OTI-067/OTI-077 [8]
  1019.      = G  100x40  8x14    800x560      16             ATI EGA Wonder,ATI VIP
  1020.      = G                         AX PC
  1021.  54h = T  132x25                     Lava Chrome II EGA
  1022.      = T  132x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  1023.      = T  132x43  8x8                     Paradise EGA-480
  1024.      = T  132x43  8x8                     NEL Electronics BIOS
  1025.      = T  132x43  7x9         16/256k    B800 Paradise VGA
  1026.      = T  132x43  8x9         16/256k    B800 Paradise VGA on multisync
  1027.      = T  132x43                     Taxan 565 EGA
  1028.      = T  132x43                     AST VGA Plus
  1029.      = T  132x43                     Hewlett-Packard D1180A
  1030.      = T  132x43  7x9          16             AT&T VDC600
  1031.      = T  132x43  9x9  1188x387     16/256k    B800 WD90C
  1032.      = T  132x43  9x9          16        B800 Diamond Speedstar 24X
  1033.      = T  132x43  8x8  1056x350     16/256k         Cirrus CL-GD5420/5422/5426
  1034.      = T  132x50  8x8          16        A000 NCR 77C22 [9]
  1035.      = G  100x42  8x14    800x600      16        A000 ATI EGA Wonder, VGA Wonder
  1036.      = G  100x42  8x14    800x600      16        A000 ATI Ultra 8514A, ATI XL
  1037.      = G        800x600     256        A000 Oak VGA
  1038.      = G  100x37  8x16    800x600     256        A000 Oak OTI-067/077 chips [8]
  1039.  55h = T   80x66  8x8         16/256k    A000 ATI VIP
  1040.      = T  132x25  8x14                     Paradise EGA-480
  1041.      = T  132x25  8x14                     NEL Electronics BIOS
  1042.      = T  132x25  7x16         16/256k    B800 Paradise VGA
  1043.      = T  132x25  8x16         16/256k    B800 Paradise VGA on multisync
  1044.      = T  132x25                     Taxan 565 EGA
  1045.      = T  132x25                     AST VGA Plus
  1046.      = T  132x25                     Hewlett-Packard D1180A
  1047.      = T  132x25  7x16          16             AT&T VDC600
  1048.      = T  132x25  8x16          16        A000 NCR 77C22 [9]
  1049.      = T  132x25  9x16 1188x400     16/256k    B800 WD90C
  1050.      = T  132x25  9x16          16        B800 Diamond Speedstar 24X
  1051.      = T  132x25  8x14    1056x350 16/256k         Cirrus CL-GD5420/5422/5426
  1052.      = T  132x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  1053.      = G   94x29  8x14    752x410                 Lava Chrome II EGA
  1054.      = G  128x48  8x16 1024x768     16/256k    A000 ATI VGA Wonder v4+     [5]
  1055.      = G           1024x768     16/256k         ATI VGA Wonder Plus
  1056.      = G           1024x768     16/256k         ATI Ultra 8514A,ATI XL
  1057.      = G  128x48  8x16 1024x768       4        A000 Oak OTI-067/077 chips [8]
  1058.  56h = T  132x43  8x8           3???       2    B000 NSI Smart EGA+
  1059.      = T  132x43  7x9           4        B000 Paradise VGA
  1060.      = T  132x43  8x9           4        B000 Paradise VGA on multisync
  1061.      = T  132x43         mono             Taxan 565 EGA
  1062.      = T  132x43  7x9           2             AT&T VDC600
  1063.      = T  132x43  9x8                     NEL Electronics BIOS
  1064.      = T  132x50  8x8           4        A000 NCR 77C22 [9]
  1065.      = T  132x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  1066.      = G           1024x768      16        A000 Oak VGA
  1067.      = G  128x48  8x16 1024x768      16        A000 Oak OTI-067/077 chips [8]
  1068.  57h = T  132x25  8x14           3???       4    B000 NSI Smart EGA+
  1069.      = T  132x25  7x16           4        B000 Paradise VGA
  1070.      = T  132x25  8x16           4        B000 Paradise VGA on multisync
  1071.      = T  132x25  9x14                     NEL Electronics BIOS
  1072.      = T  132x25         mono             Taxan 565 EGA
  1073.      = T  132x25  7x16           2             AT&T VDC600
  1074.      = T  132x25  9x14         16/256k    B800 Trident TVGA 8800/8900
  1075.      = T  132x25  8x16           4        A000 NCR 77C22 [9]
  1076.      = G   96x48  8x16    768x1024  16        A000 Oak OTI-067/077 chips [8]
  1077.  58h = T   80x33  8x14          16        B800 ATI EGA Wonder,ATI VIP
  1078.      = T   80x32  9x16          16             Genoa 6400
  1079.      = T   80x43  8x8                     NEL Electronics BIOS
  1080.      = T  132x30  9x16         16/256k    B800 Trident TVGA 8800/8900
  1081.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA
  1082.      = G  100x75  8x8    800x600      16             AT&T VDC600
  1083.      = G  100x75  8x8    800x600      16        A000 NCR 77C22 [9]
  1084.      = G  100x75  8x8    800x600      16             Diamond Speedstar 24X
  1085.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA, WD90C
  1086.      = G        800x600      16             AST VGA Plus, Compaq VGA
  1087.      = G        800x600      16             Dell VGA
  1088.      = G        800x600      16             Hewlett-Packard D1180A
  1089.      = G        800x600     ???             ELT VGA PLUS 16
  1090.      = G  100x37  8x16    800x600     16/256k    A000 Cirrus CL-GD5420/5422/5426
  1091.      = G  160x64  8x16 1280x1024  16        A000 Oak OTI-077 chipset [8]
  1092.  59h = T   80x43  9x8                     NEL Electronics BIOS
  1093.      = T   80x66  8x8         16/256k    A000 ATI VIP
  1094.      = T  132x43  9x11         16/256k    B800 Trident TVGA 8800/8900
  1095.      = G  100x75  8x8    800x600       2        A000 Paradise VGA
  1096.      = G  100x75  8x8    800x600       2             AT&T VDC600
  1097.      = G        800x600       2             AST VGA Plus, Compaq VGA
  1098.      = G        800x600       2             Dell VGA
  1099.      = G        800x600       2             Hewlett-Packard D1180A
  1100.      = G  100x75  8x8    800x600       2        A000 NCR 77C22 [9]
  1101.      = G  128x48  8x16 1024x768     256        A000 Oak OTI-077 chipset [8]
  1102.  5Ah = T   80x60  8x8                     NEL Electronics BIOS
  1103.      = T  132x60  9x8         16/256k    B800 Trident TVGA 8800/8900
  1104.      = G  128x48  8x16 1024x768       2        A000 NCR 77C22 [9]
  1105.  5Bh = T   80x30  8x16                B800 ATI VGA Wonder (undoc)
  1106.      = G        640x350     256             Genoa 6400
  1107.      = G   80x25  8x16    640x400      32K        A000 Oak OTI-067/077 chips [8]
  1108.      = G        800x600      16             Maxxon, SEFCO TVGA, Imtec
  1109.      = G  100x75  8x8    800x600     16/256k    A000 Trident TVGA 8800, 8900
  1110.      = G        800x600     ???             Vobis MVGA
  1111.      = G  100x37  8x16    800x600                 NEL Electronics BIOS
  1112.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [1,9]
  1113.  5Ch = T  100x37  8x16                     NEL Electronics BIOS
  1114.      = G        640x400     256             Logix, ATI Prism Elite
  1115.      = G        640x400     256             Maxxon, SEFCO TVGA, Imtec
  1116.      = G   80x25  8x16    640x400     256/256k    A000 Zymos Poach, Hi Res 512
  1117.      = G   80x25  8x16    640x400     256/256k    A000 Trident TVGA 8800/8900
  1118.      = G   80x30  8x16    640x480     256             Genoa 6400
  1119.      = G   80x30  8x16    640x480      32K        A000 Oak OTI-077 chipset [8]
  1120.      = G  100x75  8x8    800x600     256        A000 NCR 77C22 [9]
  1121.      = G  100x75  8x8    800x600     256/256k    A000 WD90C
  1122.      = G  100x75  8x8    800x600     256/256k    A000 Diamond Speedstar 24X
  1123.      = G  100x37  8x16    800x600     256/256k    A000 Cirrus CL-GD5420/5422/5426
  1124.  5Dh = T  100x75  8x8                     NEL Electronics BIOS
  1125.      = G        640x480     256             Logix, ATI Prism Elite
  1126.      = G        640x480     256             Maxxon, SEFCO TVGA, Imtec
  1127.      = G   80x30  8x16    640x480     256/256k    A000 Zymos Poach, Hi Res 512
  1128.      = G   80x30  8x16    640x480     256/256k    A000 Trident TVGA 8800 (512K)
  1129.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [9]
  1130.      = G  128x48  8x16 1024x768      16/256k    A000 WD90C
  1131.      = G  128x48  8x16 1024x768      16             Diamond Speedstar 24X
  1132.      = G  128x48  8x16 1024x768     16/256k    A000 Cirrus CL-GD5420/5422/5426
  1133.  5Eh = G        640x400     256             Paradise VGA,VEGA VGA
  1134.      = G        640x400     256             AST VGA Plus, NCR 77C22
  1135.      = G        640x400     256             Compaq VGA, Dell VGA
  1136.      = G   80x25  8x16    640x400     256             AT&T VDC600
  1137.      = G   80x25  8x16    640x400     256        A000 NCR 77C22 [9]
  1138.      = G   80x25  8x16    640x400     256/256k    A000 WD90C
  1139.      = G   80x25  8x16    640x400     256/256k    A000 Diamond Speedstar 24X
  1140.      = G        800x600      16             Logix, ATI Prism Elite
  1141.      = G  100x37  8x16    800x600      16             NEL Electronics BIOS
  1142.      = G  100x75  8x8    800x600     256             Genoa 6400
  1143.      = G  100x75  8x8    800x600     256/256k    A000 Zymos Poach, Trident 8900
  1144.      = G  100x75  8x8    800x600     256/256k    A000 Hi Res 512
  1145.  5Fh = G        640x480     256             Paradise VGA
  1146.      = G        640x480     256             AST VGA Plus, NCR 77C22
  1147.      = G        640x480     256             Compaq VGA, Dell VGA
  1148.      = G        640x480     256             Hewlett-Packard D1180A
  1149.      = G   80x30  8x16    640x480     256             AT&T VDC600 (512K)
  1150.      = G   80x30  8x16    640x480     256        A000 NCR 77C22 [9]
  1151.      = G   80x30  8x16    640x480     256/256k    A000 WD90C
  1152.      = G   80x30  8x16    640x480     256/256k    A000 Diamond Speedstar 24X
  1153.      = G   80x30  8x16    640x480     256/256k    A000 Cirrus CL-GD5420/5422/5426
  1154.      = G           1024x768      16             Logix, ATI Prism Elite
  1155.      = G           1024x768      16             Maxxon, Imtec
  1156.      = G  128x48  8x16 1024x768      16             Genoa 6400
  1157.      = G  128x48  8x16 1024x768      16/256k    A000 Zymos Poach, Hi Res 512
  1158.      = G  128x48  8x16 1024x768      16/256k    A000 Trident TVGA 88/8900 512K
  1159.  60h = T  132x25  8x14          16/64       8    B800 Quadram Ultra VGA
  1160.      = T  132x25  8x14          16             Genoa 6400
  1161.      = T  132x25  8x14          16             Genoa SuperEGA BIOS 3.0+
  1162.      = T  132x25                     Cirrus 5320 chipset
  1163.      = G   80x???    ???x400                 Corona/Cordata BIOS 4.10+
  1164.      = G   80x25  8x16    640x400     256       1    A000 Ahead A, Ahead B
  1165.      = G        752x410                 VEGA VGA
  1166.      = G        752x410      16             Tatung VGA
  1167.      = G        752x410      16             Video7 V-RAM VGA
  1168.      = G  128x48  8x16 1024x768       4/256k    A000 Trident TVGA 8900
  1169.      = G  128x48  8x16 1024x768     256/256k    A000 WD90C
  1170.      = G  128x48  8x16 1024x768     256/256k    A000 Diamond Speedstar 24X
  1171.      = G  128x48  8x16 1024x768     256/256k    A000 Cirrus CL-GD5420/5422/5426
  1172.  61h = T  132x29  8x12          16/64       8    B800 Quadram Ultra VGA
  1173.      = T  132x29  8x8          16             Genoa 6400
  1174.      = T  132x29  8x8          16             Genoa SuperEGA BIOS 3.0+
  1175.      = T  132x50                     Cirrus 5320 chipset
  1176.      = G        ???x400                 Corona/Cordata BIOS 4.10+
  1177.      = G   80x25  8x16    640x400     256        A000 ATI VGA Wonder,VGA Wonder+
  1178.      = G   80x25  8x16    640x400     256        A000 ATI Ultra 8514A,ATI XL
  1179.      = G   80x30  8x16    640x480     256       1    A000 Ahead A, Ahead B (512K)
  1180.      = G        720x540                 VEGA VGA
  1181.      = G        720x540      16             Tatung VGA
  1182.      = G        720x540      16             Video7 V-RAM VGA
  1183.      = G   96x64  8x16    768x1024  16/256k    A000 Trident TVGA 88/8900 512K
  1184.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [1,9]
  1185.  62h = T  132x32  8x11          16/64       6    B800 Quadram Ultra VGA
  1186.      = T  132x32  8x12          16             Genoa 6400
  1187.      = T  132x32  8x11          16             Genoa SuperEGA BIOS 3.0+
  1188.      = G        640x450      16             Cirrus 510/520 chipset
  1189.      = G   80x30  8x16    640x480     256        A000 ATI VGA Wonder,VGA Wonder+
  1190.      = G   80x30  8x16    640x480     256        A000 ATI Ultra 8514A,ATI XL
  1191.      = G   80x30  8x16    640x480     32K        A000 WD90C
  1192.      = G   80x30  8x16    640x480     32K        A000 Diamond Speedstar 24X
  1193.      = G        800x600                 VEGA VGA
  1194.      = G        800x600      16             Tatung VGA
  1195.      = G        800x600      16             Video7 V-RAM VGA
  1196.      = G  100x75  8x8    800x600     256       1    A000 Ahead A, Ahead B (512K)
  1197.      = G  128x48  8x16 1024x768     256/256k    A000 Trident TVGA 8900, Zymos
  1198.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [9]
  1199.  63h = T  132x44  8x8          16/64       5    B800 Quadram Ultra VGA
  1200.      = T  132x44  8x8          16             Genoa 6400
  1201.      = T  132x44  8x8          16             Genoa SuperEGA BIOS 3.0+
  1202.      = G        720x540      16             MORSE VGA
  1203.      = G        720x540      16             Cirrus 510/520 chipset
  1204.      = G  100x42  8x14    800x600     256        A000 ATI VGA Wonder,VGA Wonder+
  1205.      = G  100x42  8x14    800x600     256        A000 ATI Ultra 8514A,ATI XL
  1206.      = G        800x600     32K        A000 WD90C
  1207.      = G        800x600     32K        A000 Diamond Speedstar 24X
  1208.      = G  128x48  7x16 1024x768     256       1    A000 Ahead B (1MB)
  1209.      = G           1024x768       2             Video7 V-RAM VGA
  1210.  64h = T  132x60  8x8          16             Genoa 6400
  1211.      = G    -       -    640x480     64K        A000 Cirrus CL-GD 5422/5426
  1212.      = G        800x600      16             MORSE VGA
  1213.      = G        800x600      16             Cirrus 510/520 chipset
  1214.      = G        800x600     ???             SAMPO-Mira VGA
  1215.      = G           1024x768       4             Video7 V-RAM VGA
  1216.      = G  128x48  8x16 1024x768     256        A000 ATI VGA Wonder Plus,ATI XL
  1217.      = G  160x64  8x16 1280x1024 16/256k    A000 WD90C [1]
  1218.      = G  160x64  8x16 1280x1024 16/256k    A000 Diamond Speedstar 24X [1]
  1219.  65h = G    -       -    800x600     64K        A000 Cirrus CL-GD 5422/5426
  1220.      = G           1024x768      16             Video7 V-RAM VGA
  1221.      = G  128x48  8x16 1024x768      16        A000 ATI VGA Wonder
  1222.  66h = T   80x50  8x8    640x400     16/256k    B800 WD90C
  1223.      = T   80x50  8x8          16        B800 Diamond Speedstar 24X
  1224.      = G        640x400     256             Tatung VGA
  1225.      = G        640x400     256             Video7 V-RAM VGA
  1226.      = G    -       -    640x480     32K        A000 Cirrus CL-GD 5422/5426
  1227.  67h = T   80x43  8x8    640x344     16/256k    B800 WD90C
  1228.      = T   80x43  8x8          16        B800 Diamond Speedstar 24X
  1229.      = G        640x480     256             Video7 V-RAM VGA
  1230.      = G    -       -    800x600     32K        A000 Cirrus CL-GD 5422/5426
  1231.      = G  128x48  8x16 1024x768       4        A000 ATI VGA Wonder
  1232.      = G  160x64  8x16 1280x1024  16        A000 NCR 77C22 [1,9]
  1233.  69h = T  132x50  8x8  1056x400     16/256k    B800 WD90C
  1234.      = T  132x50  8x8          16        B800 Diamond Speedstar 24X
  1235.      = G        720x540     256             Video7 V-RAM VGA
  1236.  6Ah = G        800x600      16        A000 VESA standard interface
  1237.      = G  100x75  8x8    800x600      16             Genoa 6400
  1238.      = G  100x75  8x8    800x600      16             Diamond Speedstar 24X
  1239.      = G        800x600      16        A000 Ahead A
  1240.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (VESA) (see 71h)
  1241.      = G        800x600      16             Zymos Poach, Hi Res 512
  1242.      = G        800x600      16             Epson LT-386SX in CRT Mode
  1243.      = G        800x600      16             Compuadd 316SL in CRT Mode
  1244.      = G  100x37  8x16    800x600     16/256k    A000 Cirrus CL-GD5420/5422/5426
  1245.      = G  100x42  8x14    800x600            A000 ATI VGA Wonder (undoc)
  1246.      = G  160x64  8x16 1280x1024 256        A000 NCR 77C22 [1,9]
  1247.  6Bh = T  100x37  8x16          16             Genoa 6400
  1248.      = T  100x37  8x16                     NEL Electronics BIOS
  1249.  6Ch = G   80x30  8x16    640x480      16M        A000 Trident 8900CL/BIOS C04
  1250.      = G  100x75  8x8    800x600     256             Genoa 6400
  1251.      = G  160x60  8x16 1280x960     16/256k    A000 WD90C [1]
  1252.      = G  160x60  8x16 1280x960     16/256k    A000 Diamond Speedstar 24X [1]
  1253.      = G  160x64  8x16 1280x1024 16/256k    A000 Cirrus CL-GD 5422/5426 [1]
  1254.  6Dh = G  160x64  8x16 1280x1024 256/256k    A000 Cirrus CL-GD 5422/5426 [1]
  1255.  6Eh = G   40x25  8x8    320x200      64K        A000 Cirrus CL-GD 5422/5426
  1256.  6Fh = G   40x25  8x8    320x200      16M        A000 Cirrus CL-GD 5422/5426
  1257.  70h =     extended mode set (see AX=0070h)         Everex Micro Enhancer EGA
  1258.      = T   40x25  8x8          16       8    B800 Quadram (CGA double scan)
  1259.      = T   40x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1260.      = G        360x480     256             Cirrus 510/520/5320 chips
  1261.      = G   90x28  8x14    720x392      16       1    A000 Ahead B
  1262.      = G        800x600      16             C&T chipset, Cardinal
  1263.      = G           1024x480     256             Trident 8900C BIOS C3.0
  1264.  71h = T   80x25  8x8          16       8    B800 Quadram (CGA double scan)
  1265.      = T   80x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1266.      = G        528x400     256             Cirrus 510/520 chipset
  1267.      = G   80x30  8x16    640x480      16M        A000 Cirrus CL-GD 5422/5426
  1268.      = G  100x35  8x16    800x600     16of64        A000 NSI Smart EGA+
  1269.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (same as 6Ah)
  1270.      = G        960x720      16             C&T chipset, Cardinal
  1271.      = G           1024x480     256             Trident 8900C BIOS C3.0
  1272.  72h = T   80x60  8x8          16        B800 Quadram Ultra VGA
  1273.      = T   80x60  8x8          16        B800 Genoa 6400
  1274.      = T   80x60  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1275.      = G        528x480     256             Cirrus 510/520 chipset
  1276.      = G        640x480 32768        A000 ATI
  1277.      = G        640x480     16M        A000 WD90C
  1278.      = G        640x480     16M        A000 Diamond Speedstar 24X
  1279.      = G           1024x768      16             C&T chipset, Cardinal
  1280.  73h = G   80x60  8x8    640x480      16        A000 Quadram Ultra VGA
  1281.      = G   80x60  8x8    640x480      16             Genoa 6400
  1282.      = G   80x60  8x8    640x480      16             Genoa SuperEGA BIOS 3.0+
  1283.  74h = T   80x66  8x8          16        B800 Quadram Ultra VGA
  1284.      = T   80x66  8x8          16        B800 Genoa 6400
  1285.      = T   80x66  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1286.      = G        640x400       2        B800 Toshiba 3100 AT&T mode
  1287.      = G   80x30  8x16    640x480      32K        A000 Trident 8900C/BIOS C03
  1288.      = G  128x48  8x16 1024x768      16       1    A000 Ahead A, Ahead B (512K)
  1289.      = G     -       -   1024x768      64K        A000 Cirrus CL-GD 5422/5426 [1]
  1290.  75h = G   80x30  8x16    640x480      64K        A000 Trident 8900C/BIOS C03
  1291.      = G   80x66    640x528      16???        A000 Quadram Ultra VGA
  1292.      = G   80x66    640x528      16             Genoa SuperEGA BIOS 3.0+
  1293.      = G  128x48  8x16 1024x768       4       1    A000 Ahead B
  1294.  76h = T   94x29  8x14          16        B800 Quadram Ultra VGA
  1295.      = T   94x29  8x14                     Genoa SuperEGA BIOS 3.0+
  1296.      = G  100x75  8x8    800x600      32K        A000 Trident 8900C/BIOS C03
  1297.      = G  128x48  8x16 1024x768       2       1    A000 Ahead B
  1298.  77h = G   94x29    752x410      16???        A000 Quadram Ultra VGA
  1299.      = G   94x29    752x410      16             Genoa SuperEGA BIOS 3.0+
  1300.      = G  100x75  8x8    800x600      64K        A000 Trident 8900C/BIOS C03
  1301.  78h = T  100x37  8x16          16             Genoa 6400
  1302.      = T  100x75  8x8          16        B800 Quadram Ultra VGA
  1303.      = T  100x75  8x8                     Genoa SuperEGA BIOS 3.0+
  1304.      = G        640x400     256             STB VGA/EM-16 Plus
  1305.      = G        640x400     256             Cardinal, C&T chipset
  1306.      = G        640x400     256             Cirrus 5320 chipset
  1307.  79h = G        640x480     256             Cardinal, C&T chipset
  1308.      = G  100x75    800x600      16???        A000 Quadram Ultra VGA
  1309.      = G  100x75  8x8    800x600      16             Genoa SuperEGA BIOS 3.0+
  1310.      = G  100x75  8x8    800x600      16             Genoa 6400
  1311.  7Ah = T  114x60  8x8          16        B800 Quadram Ultra VGA
  1312.      = T  114x60  8x8                     Genoa SuperEGA BIOS 3.0+
  1313.      = G        720x540     256             C&T chipset, Cardinal
  1314.  7Bh = G        800x600     256             C&T chipset, Cardinal
  1315.      = G  114x60    912x480      16???        A000 Quadram Ultra VGA
  1316.      = G        912x480      16             Genoa SuperEGA BIOS 3.0+
  1317.  7Ch = G        512x512      16             Genoa
  1318.  7Dh = G   64x32  8x16    512x512     256             Genoa
  1319.  7Eh =     special mode set (see AX=007Eh)         Paradise VGA, AT&T VDC600
  1320.      = G   80x25  8x16    640x400     256             Genoa 6400
  1321.  7Fh =     special function set (see AX=007Fh)         Paradise VGA, AT&T VDC600
  1322.      = G  128x48  8x16 1024x768       4             Genoa 6400
  1323.  82h = T   80x25         B&W             AT&T VDC overlay mode [6]
  1324.  83h = T   80x25                     AT&T VDC overlay mode [6]
  1325.  86h = G        640x200     B&W             AT&T VDC overlay mode [6]
  1326.  88h = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  1327.  C0h = G        640x400     2/prog pallet         AT&T VDC overlay mode [6]
  1328.  C4h =     disable output                     AT&T VDC overlay mode [6]
  1329.  D0h = G        640x400       2        B800 DEC VAXmate AT&T mode
  1330. Notes:
  1331. [1] interlaced only
  1332. [2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  1333.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  1334.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  1335.       color) 132x25 character mode.
  1336.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  1337.       resident
  1338. [3] early XGA boards support 132-column text but do not have this BIOS mode
  1339. [4] DESQview intercepts calls to change into these two modes (21h is page 0,
  1340.       22h is page 1) even if there is no Hercules graphics board installed
  1341. [5] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  1342. [6] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  1343.       40h, or 44h
  1344. [7] BIOS text support is broken in this undocumented mode; scrolling moves only
  1345.       about 1/3 of the screen (and does even that portion incorrectly), while
  1346.       screen clears only clear about 3/4.
  1347. [8] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
  1348.       may choose to use only partially or not at all; thus, not all Oak boards
  1349.       support all "Oak" modes listed here
  1350. [9] this card uses the full 128K A000h-BFFFh range for the video buffer,
  1351.       precluding the use of a monochrome adapter in the same system
  1352. [10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 09/14/90, but not
  1353.       v8.01X dated 02/28/92; mode 21h supported by 02/28/92 version but not
  1354.       09/14/90 version
  1355. [11] HERKULES simulates a 90x45 text mode in Hercules graphics mode; the
  1356.       installation check for HERKULES.COM is the signature "Herkules" two bytes
  1357.       beyond the INT 10 handler
  1358. [12] The Realtek RTVGA BIOS v3.C10 crashes when attempting to switch into modes
  1359.     21h or 27h; this version of the BIOS also sets the BIOS data area
  1360.     incorrectly for extended text modes, resulting in scrolling after only
  1361.     24 lines (the VMODE.EXE    utility does set the data area correctly)
  1362. Index:    video modes
  1363. Index:    installation check|HERKULES
  1364. --------V-100070-----------------------------
  1365. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  1366.     AX = 0070h
  1367.     BL = mode (see below)
  1368. Desc:    specify a proprietary display mode on the Everex Micro Enhancer or
  1369.       Viewpoint video adapters
  1370. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  1371.  
  1372. Values for video mode:
  1373.       text/ text pixel     pixel    colors    disp    scrn  monitor    adapter
  1374.       grph resol  box    resoltn        page    addr
  1375.  00h = G        640x480      16             multsync    EGA,VGA
  1376.  01h = G        752x410      16             multsync    EGA,VGA
  1377.  02h = G        800x600      16             multsync    EGA,VGA
  1378.  03h = T   80x34                     multsync    EGA,VGA
  1379.  04h = T   80x60                     multsync    EGA,VGA
  1380.  05h = T   94x29                     multsync    EGA only
  1381.  06h = T   94x51                     multsync    EGA only
  1382.  07h = T  100x43  8x14          16                VGA only
  1383.  08h = T  100x75  8x8          16                VGA only
  1384.  09h = T   80x44                     EGA    EGA only
  1385.  0Ah = T  132x25                     EGA    EGA,VGA
  1386.  0Bh = T  132x44                     EGA    EGA,VGA
  1387.  0Ch = T  132x25                     CGA    EGA only
  1388.  0Dh = T   80x44                     mono    EGA only
  1389.  0Eh = T  132x25                     mono
  1390.  0Fh = T  132x44                     mono
  1391.  10h =     reserved
  1392.  11h = G           1280x350       4                EGA only
  1393.  12h = G           1280x600       4                EGA only
  1394.  13h = G        640x350     256                EGA,EV673
  1395.  14h = G        640x400     256
  1396.  15h = G        512x480     256
  1397.  16h = T   80x30  8x16         256                VGA only
  1398.  18h = T  100x27  8x16          16                VGA only
  1399.  20h = G           1024x768      16                Everex 629,678
  1400.                                 Everex EV-673
  1401.  21h = T  160x64  8x16 1280x1024  16                1MB VGA only
  1402.  30h = G        640x480     256                Everex 629,678
  1403.                                 Everex EV-673
  1404.  31h = G        800x600     256                Everex 629,678
  1405.                                 Everex EV-673
  1406.  32h = G  128x48  8x16 1024x768     256                1MB VGA only
  1407.  40h = T  132x30  8x16          16                VGA only
  1408.  50h = T  132x32  8x16         mono                VGA only
  1409.  62h = G   40x25  8x8    320x200     32K                Vwpt TC (EV629)
  1410.  70h = G   64x30  8x16    512x480     32K                Viewpoint TC
  1411.  71h = G   80x30  8x16    640x480     32K                Viewpoint TC
  1412.  76h = G   64x30  8x16    512x480     16M                Viewpoint TC
  1413.  77h = G   80x30  8x16    640x480     16M                Viewpoint TC
  1414. Index:    video modes
  1415. --------V-10007E-----------------------------
  1416. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  1417.     AX = 007Eh
  1418.     BX = horizontal dimension of the mode desired
  1419.     CX = vertical dimension of the mode desired
  1420.          (both BX/CX in pixels for graphics modes, rows for alpha modes)
  1421.     DX = number of colors of the mode desired (0000h for monochrome modes)
  1422. Return: BH = 7Eh if successful (Paradise VGA)
  1423.     AL = 7Eh if successful (AT&T VDC600)
  1424. Desc:    specify a display mode by resolution rather than mode number
  1425. SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
  1426. Index:    video modes
  1427. --------V-10007F-----------------------------
  1428. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  1429.     AX = 007Fh
  1430.     BH = function
  1431.         00h     set VGA operation
  1432.         01h     set non-VGA operation
  1433.         color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation
  1434.         monochrome mode 7 will set non-VGA MDA/Hercules operation
  1435.         02h     query mode status
  1436.         Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode
  1437.             CH = total video RAM size in 64k byte units
  1438.             CL = video RAM used by the current mode
  1439.         03h     lock current mode
  1440.         allows current mode (VGA or non-VGA) to survive re-boot
  1441.         04h     enter CGA mode (AT&T VDC600 only)
  1442.         05h     enter MDA mode (AT&T VDC600 only)
  1443.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  1444.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1445.         BL = value to set in the paradise register
  1446.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  1447.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1448.         Return: BL = value of the paradise register
  1449.             BH = 7Fh if successful
  1450. Return: AL = 7Fh if successful (AT&T VDC600)
  1451. Desc:    set emulation mode or access proprietary extended data registers
  1452. SeeAlso: AX=007Eh,AH=FF"Oak"
  1453. --------V-1001-------------------------------
  1454. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  1455.     AH = 01h
  1456.     CH = bit 7    should be zero
  1457.          bits 6,5 cursor blink
  1458.              (00=normal, 01=invisible, 10=erratic, 11=slow)
  1459.              (00=normal, other=invisible on EGA/VGA)
  1460.          bits 4-0 top scan line containing cursor
  1461.     CL = bottom scan line containing cursor (bits 0-4)
  1462. Desc:    specify the starting and ending scan lines to be occupied by the
  1463.       hardware cursor in text modes
  1464. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  1465.       returns unmapped cursor shape
  1466.     UltraVision scales size to the current font height by assuming 14-line
  1467.       monochrome and 8-line color fonts; this call is not valid if cursor
  1468.       emulation has been disabled
  1469.     applications which wish to change the cursor by programming the
  1470.       hardware directly on EGA or above should call INT 10/AX=1130h or
  1471.       read 0040h:0085h first to determine the current font height
  1472. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  1473.       is not equal to the current video mode
  1474. SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h
  1475. --------V-1002-------------------------------
  1476. INT 10 - VIDEO - SET CURSOR POSITION
  1477.     AH = 02h
  1478.     BH = page number
  1479.         0-3 in modes 2&3
  1480.         0-7 in modes 0&1
  1481.         0 in graphics modes
  1482.     DH = row (00h is top)
  1483.     DL = column (00h is left)
  1484. SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh
  1485. --------V-1003-------------------------------
  1486. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  1487.     AH = 03h
  1488.     BH = page number
  1489.         0-3 in modes 2&3
  1490.         0-7 in modes 0&1
  1491.         0 in graphics modes
  1492. Return: AX = 0000h (Phoenix BIOS)
  1493.     CH = start scan line
  1494.     CL = end scan line
  1495.     DH = row (00h is top)
  1496.     DL = column (00h is left)
  1497. Notes:    a separate cursor is maintained for each of up to 8 display pages
  1498.     many ROM BIOSes incorrectly return the default size for a color display
  1499.       (start 06h, end 07h) when a monochrome display is attached
  1500. SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h
  1501. --------V-1004-------------------------------
  1502. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  1503.     AH = 04h
  1504. Return: AH = light pen trigger flag
  1505.         00h not down/triggered
  1506.         01h down/triggered
  1507.         DH,DL = row,column of character light pen is on
  1508.         CH = pixel row (graphics modes 04h-06h)
  1509.         CX = pixel row (graphics modes with >200 rows)
  1510.         BX = pixel column
  1511. Desc:    determine the current position and status of the light pen (if
  1512.       present)
  1513. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  1514.       column modes) or 4 (640-column modes)
  1515.     returned row numbers are only accurate to two lines
  1516. --------V-1005-------------------------------
  1517. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  1518.     AH = 05h
  1519.     AL = new page number (00h to number of pages - 1) (see AH=00h)
  1520. Desc:    specify which of possibly multiple display pages will be visible
  1521. Note:    to determine whether the requested page actually exists, use AH=0Fh
  1522.       to query the current page after making this call
  1523. SeeAlso: AH=0Fh,AH=43h,AH=45h
  1524. --------V-1005-------------------------------
  1525. INT 10 - VIDEO - PCjr - MANIPULATE CRT/CPU PAGE REGISTERS
  1526.     AH = 05h
  1527.     AL = subfunction
  1528.         80h read CRT and CPU page registers
  1529.         Return: BH = CRT page register
  1530.             BL = CPU page register
  1531.         81h set CPU page register
  1532.         BL = CPU page
  1533.         82h set CRT page register
  1534.         BH = CRT page
  1535.         83h set both CPU and CRT page registers
  1536.         BL = CPU page
  1537.         BH = CRT page
  1538. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1539.       memory will be mapped at B800h by the hardware
  1540.     the CRT page determines the start address of the memory used by the
  1541.       video controller
  1542. --------V-1005-------------------------------
  1543. INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GRAPHICS BITMAP BUFFER
  1544.     AH = 05h
  1545.     AL = function
  1546.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  1547.         BX = segment of buffer
  1548.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  1549.         Return: DX = segment of graphics bitmap buffer
  1550. --------V-1006-------------------------------
  1551. INT 10 - VIDEO - SCROLL UP WINDOW
  1552.     AH = 06h
  1553.     AL = number of lines by which to scroll up (00h = clear entire window)
  1554.     BH = attribute used to write blank lines at bottom of window
  1555.     CH,CL = row,column of window's upper left corner
  1556.     DH,DL = row,column of window's lower right corner
  1557. Note:    affects only the currently active page (see AH=05h)
  1558. Warning: some implementations have a bug which destroys BP
  1559. SeeAlso: AH=07h,AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
  1560. --------V-1007-------------------------------
  1561. INT 10 - VIDEO - SCROLL DOWN WINDOW
  1562.     AH = 07h
  1563.     AL = number of lines by which to scroll down (00h=clear entire window)
  1564.     BH = attribute used to write blank lines at top of window
  1565.     CH,CL = row,column of window's upper left corner
  1566.     DH,DL = row,column of window's lower right corner
  1567. Note:    affects only the currently active page (see AH=05h)
  1568. Warning: some implementations have a bug which destroys BP
  1569. SeeAlso: AH=06h,AH=72h,AH=73h,INT 50/AX=0014h
  1570. --------V-1008-------------------------------
  1571. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1572.     AH = 08h
  1573.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1574. Return: AH = charater's attribute (see below)
  1575.     AL = character
  1576. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  1577.       underlined
  1578.     the blink bit may be reprogrammed to enable intense background colors
  1579.       using AX=1003h or by programming the CRT controller
  1580.     the foreground intensity bit (3) can be programmed to switch between
  1581.       character sets A and B on EGA and VGA cards, thus enabling 512
  1582.       simultaneous characters on screen.  In this case the bit's usual
  1583.       function (intensity) is regularly turned off.
  1584. SeeAlso: AH=09h,AX=1003h,AX=5001h
  1585.  
  1586. Bitfields for character's attribute:
  1587.  bit 7    blink
  1588.  bits 6-4  background color
  1589.         000 black    100 red
  1590.         001 blue    101 magenta
  1591.         010 green    110 brown
  1592.         011 cyan    111 white
  1593.  bits 3-0  foreground color
  1594.         0000 black     1000 dark gray
  1595.         0001 blue     1001 light blue
  1596.         0010 green     1010 light green
  1597.         0011 cyan     1011 light cyan
  1598.         0100 red     1100 light red
  1599.         0101 magenta     1101 light magenta
  1600.         0110 brown     1110 yellow
  1601.         0111 light gray     1111 white
  1602. --------V-1009-------------------------------
  1603. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1604.     AH = 09h
  1605.     AL = character to display
  1606.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1607.     BL = attribute (text mode) or color (graphics mode)
  1608.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1609.     CX = number of times to write character
  1610. Notes:    all characters are displayed, including CR, LF, and BS
  1611.     replication count in CX may produce an unpredictable result in graphics
  1612.       modes if it is greater than the number of positions remaining in the
  1613.       current row
  1614. SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F,INT 43,INT 44
  1615. --------V-100A-------------------------------
  1616. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  1617.     AH = 0Ah
  1618.     AL = character to display
  1619.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1620.     BL = attribute (PCjr only) or color (graphics mode)
  1621.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1622.     CX = number of times to write character
  1623. Notes:    all characters are displayed, including CR, LF, and BS
  1624.     replication count in CX may produce an unpredictable result in graphics
  1625.       modes if it is greater than the number of positions remaining in the
  1626.       current row
  1627. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1628. --------V-100B--BH00-------------------------
  1629. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  1630.     AH = 0Bh
  1631.     BH = 00h
  1632.     BL = background/border color (border only in text modes)
  1633. SeeAlso: AH=0Bh/BH=01h
  1634. --------V-100B--BH01-------------------------
  1635. INT 10 - VIDEO - SET PALETTE
  1636.     AH = 0BH
  1637.     BH = 01h
  1638.     BL = palette ID
  1639.         00h background, green, red, and brown/yellow
  1640.         01h background, cyan, magenta, and white
  1641. SeeAlso: AH=0Bh/BH=00h
  1642. --------V-100C-------------------------------
  1643. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  1644.     AH = 0Ch
  1645.     BH = page number
  1646.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  1647.     CX = column
  1648.     DX = row
  1649. Desc:    set a single pixel on the display in graphics modes
  1650. Notes:    valid only in graphics modes
  1651.     BH is ignored if the current video mode supports only one page
  1652. SeeAlso: AH=0Dh,AH=46h
  1653. --------V-100D-------------------------------
  1654. INT 10 - VIDEO - READ GRAPHICS PIXEL
  1655.     AH = 0Dh
  1656.     BH = page number
  1657.     CX = column
  1658.     DX = row
  1659. Return: AL = pixel color
  1660. Desc:    determine the current color of the specified pixel in grahics modes
  1661. Notes:    valid only in graphics modes
  1662.     BH is ignored if the current video mode supports only one page
  1663. SeeAlso: AH=0Ch,AH=47h
  1664. --------V-100E-------------------------------
  1665. INT 10 - VIDEO - TELETYPE OUTPUT
  1666.     AH = 0Eh
  1667.     AL = character to write
  1668.     BH = page number
  1669.     BL = foreground color (graphics modes only)
  1670. Desc:    display a character on the screen, advancing the cursor and scrolling
  1671.       the screen as necessary
  1672. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  1673.       and do the expected things
  1674.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  1675.       the current active page
  1676. SeeAlso: AH=02h,AH=0Ah
  1677. --------V-100F-------------------------------
  1678. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  1679.     AH = 0Fh
  1680. Return: AH = number of character columns
  1681.     AL = display mode (see AH=00h)
  1682.     BH = active page (see AH=05h)
  1683. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1684.       also have bit 7 set
  1685.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1686.       (monochrome) in all extended-row text modes
  1687. SeeAlso: AH=00h,AH=05h,AX=10F2h/BL=00h,AX=1130h,AX=CD04h
  1688. --------V-100F56BX4756-----------------------
  1689. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  1690.     AX = 0F56h
  1691.     BX = 4756h
  1692.     CX = 4944h
  1693.     DL = function
  1694.         01h installation check
  1695.         Return: AX = 5649h
  1696.             BX = 4443h
  1697.             CX = 5647h
  1698.             DH = 01h
  1699.         02h get first video mode's parameters
  1700.         Return: AX = BIOS mode number
  1701.             BX = width in pixels
  1702.             CX = height in pixels
  1703.             DX = number of colors
  1704.         03h get next video mode's parameters
  1705.         Return: as for DL=02h
  1706.         04h display line???
  1707.         ES:DI -> record (see below)
  1708.         ???
  1709.         Return: ???
  1710. Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  1711. Note:    the use of TSR display drivers was discontinued after v2.20
  1712. Index:    installation check;VUIMAGE display driver
  1713.  
  1714. Format of record for DL=04h:
  1715. Offset    Size    Description
  1716.  00h    WORD    row number
  1717.  02h    WORD    starting column???
  1718.  04h    WORD    ending column???
  1719.     ???
  1720. --------V-100F--SIF123-----------------------
  1721. INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
  1722.     AH = 0Fh
  1723.     SI = F123h
  1724.     DI = 321Fh
  1725. Return: AH = number of character columns
  1726.     AL = display mode (see AH=00h)
  1727.     BH = active page (see AH=05h)
  1728.     SI = DI = F345h if installed
  1729. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1730.       also have bit 7 set
  1731.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1732.       (monochrome) in all extended-row text modes
  1733. SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
  1734. --------V-1010-------------------------------
  1735. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  1736.     AH = 10h
  1737.     CH,CL = row,column of upper left corner of window
  1738.     DH,DL = row,column of lower right corner of window
  1739. Return: AL = status
  1740.         00h successful
  1741.         01h failed
  1742.     AH destroyed
  1743. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1744. Note:    when a window has been set, all output via AH=0Eh is restricted to
  1745.       the specified window
  1746. SeeAlso: AH=11h"Window",AH=12h"Window"
  1747. --------V-1010-------------------------------
  1748. INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
  1749.     AH = 10h
  1750.     AL = speed
  1751.         00h fast
  1752.         01h slow (scrolling only moves characters during vertical retrace)
  1753. Return: AH = previous speed
  1754. --------V-101000-----------------------------
  1755. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  1756.     AX = 1000h
  1757.     BL = palette register number (00h-0Fh)
  1758.        = attribute register number (undocumented)
  1759.          10h attribute mode control register (should let BIOS control this)
  1760.          11h overscan color register (see also AX=1001h)
  1761.          12h color plane enable register (bits 3-0 enable corresponding
  1762.         text attribute bit)
  1763.          13h horizontal PEL panning register
  1764.          14h color select register
  1765.     BH = color or attribute register value
  1766. Notes:    on MCGA, only BX = 0712h is supported
  1767.     under UltraVision, the palette locking status (see AX=CD01h)
  1768.       determines the outcome
  1769. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  1770. --------V-101001-----------------------------
  1771. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  1772.     AX = 1001h
  1773.     BH = border color (00h-3Fh)
  1774. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  1775.       and places the border color at offset 11h of the palette table
  1776.       rather than offset 10h
  1777. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1778.       determines the outcome
  1779. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  1780. --------V-101002-----------------------------
  1781. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  1782.     AX = 1002h
  1783.     ES:DX -> palette register list
  1784. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1785.       determines the outcome
  1786. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  1787.  
  1788. Format of palette register list:
  1789. Offset    Size    Description
  1790.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  1791.  10h    BYTE    border color
  1792. --------V-101003-----------------------------
  1793. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  1794.     AX = 1003h
  1795.     BL = new state
  1796.         00h background intensity enabled
  1797.         01h blink enabled
  1798.     BH = 00h to avoid problems on some adapters
  1799. Notes:    although there is no function to get the current status on adapters
  1800.       prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
  1801.       VGA, use AH=1Bh and check offset 2Dh of the returned data
  1802.     when configured for a monochrome display, the Boca Research Multi-EGA
  1803.       with ROM v M1.1 Type D has its screen disrupted if BH is not clear
  1804. SeeAlso: AH=08h,AH=1Bh
  1805. --------V-101007-----------------------------
  1806. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  1807.     AX = 1007h
  1808.     BL = palette or attribute (undoc) register number (see AX=1000h)
  1809. Return: BH = palette or attribute register value
  1810. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1811.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1812.       registers will cause incorrect results because the EGA registers are
  1813.       write-only.  To guard against older versions or unsupported video
  1814.       modes, programs which expect to use this function on EGA systems
  1815.       should set BH to FFh on entry.
  1816. SeeAlso: AX=1000h,AX=1009h
  1817. --------V-101008-----------------------------
  1818. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  1819.     AX = 1008h
  1820. Return: BH = border color (00h-3Fh)
  1821. Note:    (see AX=1007h)
  1822. SeeAlso: AX=1001h
  1823. --------V-101009-----------------------------
  1824. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  1825.     AX = 1009h
  1826.     ES:DX -> 17-byte buffer (see AX=1002h)
  1827. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1828.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1829.       registers will cause incorrect results because the EGA registers are
  1830.       write-only.  To guard against older versions or unsupported video
  1831.       modes, programs which expect to use this function on EGA systems
  1832.       should set the ES:DX buffer to FFh before calling.
  1833. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  1834. --------V-101010-----------------------------
  1835. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1836.     AX = 1010h
  1837.     BX = register number
  1838.     CH = new value for green (0-63)
  1839.     CL = new value for blue (0-63)
  1840.     DH = new value for red (0-63)
  1841. SeeAlso: AX=1012h,AX=1015h
  1842. --------V-101012-----------------------------
  1843. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  1844.     AX = 1012h
  1845.     BX = starting color register
  1846.     CX = number of registers to set
  1847.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  1848.          byte each of red, green and blue (0-63)
  1849. SeeAlso: AX=1010h,AX=1017h,INT 62/AX=00A5h
  1850. --------V-101013-----------------------------
  1851. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  1852.     AX = 1013h
  1853.     BL = subfunction
  1854.         00h select paging mode
  1855.         BH = 00h select 4 blocks of 64
  1856.         BH = 01h select 16 blocks of 16
  1857.         01h select page
  1858.         BH = page number (00h to 03h) or (00h to 0Fh)
  1859. Note:    this function is not valid in mode 13h
  1860. SeeAlso: AX=101Ah
  1861. --------V-101015-----------------------------
  1862. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1863.     AX = 1015h
  1864.     BL = palette register number
  1865. Return: DH = red value
  1866.     CH = green value
  1867.     CL = blue value
  1868. SeeAlso: AX=1010h,AX=1017h
  1869. --------V-101017-----------------------------
  1870. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  1871.     AX = 1017h
  1872.     BX = starting palette register
  1873.     CX = number of palette registers to read
  1874.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  1875. Return: buffer filled with CX red, green and blue triples
  1876. SeeAlso: AX=1012h,AX=1015h,INT 62/AX=00A4h
  1877. --------V-101018-----------------------------
  1878. INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
  1879.     AX = 1018h
  1880.     BL = new PEL value
  1881. SeeAlso: AX=1019h
  1882. --------V-101019-----------------------------
  1883. INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
  1884.     AX = 1019h
  1885. Return: BL = value read
  1886. SeeAlso: AX=1018h
  1887. --------V-10101A-----------------------------
  1888. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  1889.     AX = 101Ah
  1890. Return: BL = paging mode
  1891.         00h four pages of 64
  1892.         01h sixteen pages of 16
  1893.     BH = current page
  1894. SeeAlso: AX=1013h
  1895. --------V-10101B-----------------------------
  1896. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  1897.     AX = 101Bh
  1898.     BX = starting palette register
  1899.     CX = number of registers to convert
  1900. Desc:    convert the RGB values of one or more palette registers such that the
  1901.       resulting values are grays with the same intensities as the original
  1902.       colors
  1903. SeeAlso: AH=12h/BL=33h
  1904. --------V-1010E0-----------------------------
  1905. INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
  1906.     AX = 10E0h
  1907.     BL = video mode (see also AH=00h)
  1908.         2Eh = 640x480
  1909. Return: ???
  1910. SeeAlso: AH=00h,AX=10F0h
  1911. --------V-1010F0-----------------------------
  1912. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  1913.     AX = 10F0h
  1914.     BL = video mode (see also AH=00h)
  1915.         13h = 320x200x32K
  1916.         2Dh = 640x350x32K
  1917.         2Eh = 640x480x32K
  1918.         2Fh = 640x400x32K
  1919.         30h = 800x600x32K
  1920.         3Eh = 640x480x16M (Genoa 7900)
  1921.         FFh Tseng 24-bit color mode
  1922.         BH = mode
  1923.             2Eh = 640x480x16M
  1924. Return: AL = 10h if supported
  1925.     AH = status
  1926.         00h if successful
  1927.         other on error
  1928. Desc:    switch the display into a graphics mode with 15 or more bits per pixel
  1929. Note:    the Tseng HiColor BIOS extensions are supported by:
  1930.       Diamond Computer Systems    SpeedStar HiColor VGA
  1931.       Everex Systems        HC VGA
  1932.       Focus Information Systems    2theMax 4000
  1933.       Cardinal Technologies        VGA732
  1934.       Orchid ProDesigner IIs    Genoa 7900
  1935. SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
  1936. Index:    video modes
  1937. --------V-1010F1-----------------------------
  1938. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  1939.     AX = 10F1h
  1940. Return: AL = 10h if supported
  1941.     BL = type of digital/analog converter
  1942.         00h normal VGA DAC
  1943.         01h Sierra SC1148x HiColor DAC
  1944.         02h new Sierra DAC
  1945.        else other HiColor DAC
  1946. Desc:    determine which type of digital-to-analog converter is installed on the
  1947.       display board
  1948. SeeAlso: AX=10F0h,AX=10F2h
  1949. --------V-1010F2BL00-------------------------
  1950. INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF IN HiColor MODE
  1951.     AX = 10F2h
  1952.     BL = 00h
  1953. Return: AX = 0010h if supported
  1954.     BL = video mode type
  1955.         00h normal
  1956.         else HiColor mode
  1957. Desc:    determine whether the display is in a graphics mode with 15 or more
  1958.       bits per pixel color resolution
  1959. SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
  1960. --------V-1011-------------------------------
  1961. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  1962.     AH = 11h
  1963. Return: CH,CL = row,column of upper left corner
  1964.     DH,DL = row,column of lower right corner
  1965. Desc:    determine the portion of the display to which output is restricted
  1966. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1967. SeeAlso: AH=10h"Window",AH=12h"Window"
  1968. --------V-1011-------------------------------
  1969. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1970.     AH = 11h
  1971.     The following functions will cause a mode set, completely resetting
  1972.     the video environment, but without clearing the video buffer
  1973.     AL = 00h, 10h: load user-specified patterns
  1974.         ES:BP -> user table
  1975.         CX      = count of patterns to store
  1976.         DX      = character offset into map 2 block
  1977.         BL      = block to load in map 2
  1978.         BH      = number of bytes per character pattern
  1979.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  1980.         BL      = block to load
  1981.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  1982.         BL      = block to load
  1983.     AL = 03h: set block specifier
  1984.         BL      = block specifier
  1985.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute
  1986.                      bit 3 = 0
  1987.                   bits 2,3 = block selected by chars with attribute
  1988.                      bit 3 = 1
  1989.            (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  1990.              bits 2,3,5 = block selected by attribute bit 3 = 1
  1991.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  1992.         BL    = block to load
  1993. Notes:    The routines called with AL=1xh are designed to be called only
  1994.       immediately after a mode set and are similar to the routines called
  1995.       with AL=0xh, except that:
  1996.           Page 0 must be active.
  1997.           Bytes/character is recalculated.
  1998.           Max character rows is recalculated.
  1999.           CRT buffer length is recalculated.
  2000.           CRTC registers are reprogrammed as follows:
  2001.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  2002.              R0A = bytes/char-2 ; cursor start
  2003.              R0B = 0        ; cursor end
  2004.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  2005.              R14 = bytes/char    ; underline loc
  2006.                (*** BUG: should be 1 less ***)
  2007.     the current block specifiers may be determined with INT 10/AH=1Bh,
  2008.       looking at offsets 2Bh and 2Ch of the returned data (VGA only)
  2009. SeeAlso: AH=1Bh,AX=CD10h
  2010. --------V-1011-------------------------------
  2011. INT 10 - VIDEO - Realtek RTVGA - TEXT-MODE CHARACTER GENERATOR FUNCTIONS
  2012.     AH = 11h
  2013.     AL = 07h load user-specified paterns and recalculate mode parms
  2014.          parameters are the same as for AL = 10h
  2015.     AL = 08h load monochrome patterns (8x14) and recalculate mode parms
  2016.          parameters are the same as for AL = 11h
  2017.     AL = 09h load ROM 8 by 8 double-dot patterns and recalculate mode parms
  2018.          parameters are the same as for AL = 12h
  2019.     AL = 0Bh load ROM 8x16 character set (VGA) and recalculate mode parms
  2020.          parameters are the same as for AL = 14h
  2021. Note:    these functions should only be called under the same conditions as
  2022.       AL=1xh (see entry above)
  2023. SeeAlso: AH=11h
  2024. --------V-10110F-----------------------------
  2025. INT 10 - VIDEO - Realtek RTVGA - SET USER 8x8 GRAPHICS CHARACTERS
  2026.     AX = 110Fh
  2027.     ES:BP -> user table for INT 1F
  2028. Note:    this function is meant to be called immediately after a mode set;
  2029.       results are unpredictable at other times
  2030. SeeAlso: AX=1110h,AX=1111h,AX=1112h,AX=1120h
  2031. --------V-101110-----------------------------
  2032. INT 10 - VIDEO - Realtek RTVGA - SET USER GRAPHICS CHARACTERS
  2033.     AX = 1110h
  2034.     ES:BP -> user table
  2035.     CX = bytes per character
  2036.     BL = row specifier
  2037.         00h user set
  2038.         DL = number of rows
  2039.         01h 14 rows
  2040.         02h 25 rows
  2041.         03h 43 rows
  2042. Note:    this function is meant to be called immediately after a mode set;
  2043.       results are unpredictable at other times
  2044. SeeAlso: AX=110Fh,AX=1112h,AX=1121h
  2045. --------V-101111-----------------------------
  2046. INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x14 GRAPHICS CHARACTERS
  2047.     AX = 1111h
  2048.     BL = row specifier (see AX=1121h)
  2049. Note:    this function is meant to be called immediately after a mode set;
  2050.       results are unpredictable at other times
  2051. SeeAlso: AX=110Fh,AX=1110h,AX=1122h
  2052. --------V-101112-----------------------------
  2053. INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x8 DOUBLE-DOT CHARACTERS
  2054.     AX = 1112h
  2055.     BL = row specifier (see AX=1121h)
  2056. Note:    this function is meant to be called immediately after a mode set;
  2057.       results are unpredictable at other times
  2058. SeeAlso: AX=110Fh,AX=1110h,AX=1111h,AX=1123h
  2059. --------V-101120-----------------------------
  2060. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA)
  2061.     AX = 1120h
  2062.     ES:BP -> user table for INT 1F
  2063. Note:    this function is meant to be called immediately after a mode set;
  2064.       results are unpredictable at other times
  2065. SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1125h,INT 1F,INT 43
  2066. --------V-101121-----------------------------
  2067. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA)
  2068.     AX = 1121h
  2069.     ES:BP -> user table
  2070.     CX = bytes per character
  2071.     BL = row specifier
  2072.         00h user set
  2073.         DL = number of rows
  2074.         01h 14 rows
  2075.         02h 25 rows
  2076.         03h 43 rows
  2077. Note:    this function is meant to be called immediately after a mode set;
  2078.       results are unpredictable at other times
  2079. SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  2080. --------V-101122-----------------------------
  2081. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA)
  2082.     AX = 1122h
  2083.     BL = row specifier (see AX=1121h)
  2084. Notes:    this function is meant to be called immediately after a mode set;
  2085.       results are unpredictable at other times
  2086.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2087. SeeAlso: AX=1111h,AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  2088. --------V-101123-----------------------------
  2089. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA)
  2090.     AX = 1123h
  2091.     BL = row specifier (see AX=1121h)
  2092. Notes:    this function is meant to be called immediately after a mode set;
  2093.       results are unpredictable at other times
  2094.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2095. SeeAlso: AX=1112h,AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h,INT 1F,INT 43
  2096. --------V-101124-----------------------------
  2097. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA)
  2098.     AX = 1124h
  2099.     BL = row specifier (see AX=1121h)
  2100. Notes:    this function is meant to be called immediately after a mode set;
  2101.       results are unpredictable at other times
  2102.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2103. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h,INT 1F,INT 43
  2104. --------V-101129-----------------------------
  2105. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro)
  2106.     AX = 1129h
  2107.     BL = row specifier (see AX=1121h)
  2108. Notes:    this function is meant to be called immediately after a mode set;
  2109.       results are unpredictable at other times
  2110.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2111. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F, INT 43
  2112. --------V-101130-----------------------------
  2113. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  2114.     AX = 1130h
  2115.     BH = pointer specifier
  2116.         00h INT 1Fh pointer
  2117.         01h INT 43h pointer
  2118.         02h ROM 8x14 character font pointer
  2119.         03h ROM 8x8 double dot font pointer
  2120.         04h ROM 8x8 double dot font (high 128 characters)
  2121.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  2122.         06h ROM 8x16 font (MCGA, VGA)
  2123.         07h ROM alternate 9x16 font (VGA only)
  2124.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  2125.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  2126. Return: ES:BP = specified pointer
  2127.     CX    = bytes/character of on-screen font (not the requested font!)
  2128.     DL    = character rows on screen - 1 (VGA)
  2129.           = character rows on screen (EGA)
  2130. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  2131.       8xN font at ES:BP+256N
  2132. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  2133.  
  2134. Format of alternate font table [array]:
  2135. Offset    Size    Description
  2136.  00h    BYTE    character to be replaced (00h = end of table)
  2137.  01h  N BYTEs    graphics data for character, one byte per scan line
  2138. --------V-101130BX4D4F-----------------------
  2139. INT 10 - M10_SCR.COM v3.5+ - INSTALLATION CHECK
  2140.     AX = 1130h
  2141.     BX = 4D4Fh
  2142. Return: CX = 4F4Dh if installed
  2143.         ES:BP -> M10_SCR INT 10 handler
  2144. Program: M10_SCR is a shareware extended text mode and font driver by
  2145.       I.V. Morozov
  2146. SeeAlso: INT 16/AX=4D4Fh
  2147. --------V-1012-------------------------------
  2148. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  2149.     AH = 12h
  2150. Return: BH = attribute to use on blanked lines when scrolling
  2151. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  2152. SeeAlso: AH=11h"Window",AH=12h"Window"
  2153. --------V-1012--BL10-------------------------
  2154. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  2155.     AH = 12h
  2156.     BL = 10h
  2157. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  2158.          01h mono mode in effect (I/O port 3Bxh)
  2159.     BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K)
  2160.     CH = feature bits
  2161.     CL = switch settings
  2162.         bit 0: switch 1 OFF
  2163.         bit 1: switch 2 OFF
  2164.         bit 2: switch 3 OFF
  2165.         bit 3: switch 4 OFF
  2166.         bits 4-7: unused
  2167. Note:    one possible check for the presence of an EGA or later display card
  2168.       is to call this function with BH=FFh; if not present, BH will be
  2169.       unchanged on return
  2170. --------V-1012--BL11-------------------------
  2171. INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET BIOS INFO
  2172.     AH = 12h
  2173.     BL = 11h
  2174. Return: AL = 12h if function supported
  2175.         ES:BP -> BIOS info structure
  2176. SeeAlso: AH=12h/BL=12h"TRIDENT"
  2177.  
  2178. Format of Info structure:
  2179. Offset    Size     Description
  2180.  00h    BYTE     ??? (=0)
  2181.  01h    BYTE     OEM Code (00h for original Trident)
  2182.  02h    WORD     ID??? (1073h for 8800BR, 1074 for 8800CS)
  2183.  04h  8 BYTEs     BIOS date ('mm/dd/yy')
  2184.  0Ch    WORD     ???
  2185.  0Eh  8 BYTEs     BIOS Version (' C3-128 ', ' C3-129 ')
  2186. --------V-1012--BL12-------------------------
  2187. INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET VIDEO RAM SIZE
  2188.     AH = 12h
  2189.     BL = 12h
  2190. Return: AL = 12h if function supported
  2191.         AH = number of 256K banks of RAM installed
  2192. SeeAlso: AH=12h/BL=11h"TRIDENT"
  2193. --------V-1012--BL20-------------------------
  2194. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  2195.     AH = 12h
  2196.     BL = 20h  select alternate print screen routine
  2197. Desc:    installs a PrtSc routine from the video card's BIOS to replace the
  2198.       default PrtSc handler from the ROM BIOS, which usually does not
  2199.       understand screen heights other than 25 lines
  2200. Note:    some adapters disable print-screen instead of enhancing it
  2201. SeeAlso: INT 05
  2202. --------V-1012--BL2E-------------------------
  2203. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2204.     AH = 12h
  2205.     BL = 2Eh
  2206. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2207.       crash the system on this function
  2208. --------V-1012--BL30-------------------------
  2209. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  2210.     AH = 12h
  2211.     BL = 30h
  2212.     AL = vertical resolution
  2213.          00h 200 scan lines
  2214.          01h 350 scan lines
  2215.          02h 400 scan lines
  2216. Return: AL = 12h if function supported
  2217. Desc:    specify the number of scan lines used to display text modes
  2218. Note:    the specified resolution will take effect on the next mode set
  2219. SeeAlso: AH=00h
  2220. --------V-1012--BL31-------------------------
  2221. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  2222.     AH = 12h
  2223.     BL = 31h
  2224.     AL = new state
  2225.         00h enable default palette loading
  2226.         01h disable default palette loading
  2227. Return: AL = 12h if function supported
  2228. Desc:    specify whether a default palette should be loaded when the display
  2229.       mode is set
  2230. SeeAlso: AH=00h
  2231. --------V-1012--BL32-------------------------
  2232. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  2233.     AH = 12h
  2234.     BL = 32h
  2235.     AL = new state
  2236.         00h enable video addressing
  2237.         01h disable video addressing
  2238. Return: AL = 12h if function supported
  2239. Desc:    specify whether the CPU should have access to video memory and the
  2240.       display adapters I/O registers
  2241. --------V-1012--BL33-------------------------
  2242. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  2243.     AH = 12h
  2244.     BL = 33h
  2245.     AL = new state
  2246.         00h enable gray scale summing
  2247.         01h disable gray scale summing
  2248. Return: AL = 12h if function supported
  2249. Desc:    specify whether or not colors should be converted to gray scale when
  2250.       palette or color registers are loaded
  2251. SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h
  2252. --------V-1012--BL34-------------------------
  2253. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  2254.     AH = 12h
  2255.     BL = 34h
  2256.     AL = new state
  2257.         00h enable alphanumeric cursor emulation
  2258.         01h disable alphanumeric cursor emulation
  2259. Return: AL = 12h if function supported
  2260. Desc:    specify whether the BIOS should automatically remap cursor start/end
  2261.       according to the current character height in text modes
  2262. SeeAlso: AH=01h,AH=03h
  2263. --------V-1012--BL35-------------------------
  2264. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  2265.     AH = 12h
  2266.     BL = 35h
  2267.     AL = subfunction
  2268.         00h initial adapter video off
  2269.         01h initial planar video on
  2270.         02h switch active video off
  2271.         03h switch inactive video on
  2272.         80h *UNDOCUMENTED* set system board video active flag
  2273.     ES:DX -> buffer for 128 byte save area (if AL = 0, 2 or 3)
  2274. Return: AL = 12h if function supported
  2275. Desc:    switch between two video adapters which may otherwise have address
  2276.       conflicts
  2277. --------V-1012--BL36-------------------------
  2278. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  2279.     AH = 12h
  2280.     BL = 36h
  2281.     AL = new state
  2282.         00h enable refresh
  2283.         01h disable refresh
  2284. Return: AL = 12h if function supported
  2285. Desc:    specify whether the contents of video memory should be displayed on
  2286.       the screen; disabling refresh effectively blanks the screen
  2287. SeeAlso: AX=BF05h
  2288. --------V-1012--BH55-------------------------
  2289. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  2290.     AH = 12h
  2291.     BH = 55h
  2292.     BL = subfunction
  2293.         00h disable enhanced features
  2294.         01h enable enhanced features
  2295.         02h get status
  2296.         Return: AL = status flags (see below)
  2297.         03h disable register trapping (CGA emulation)
  2298.         04h enable register trapping
  2299.         05h program video mode
  2300.         ES:BP -> video mode table (see below)
  2301.         06h get mode table
  2302.         AL = video mode
  2303.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  2304.             BP = FFFFh on error
  2305. SeeAlso: AH=FFh"Oak"
  2306.  
  2307. Bitfields for status flags:
  2308.  bit 3    set if enhanced features enabled
  2309.  bits 7-5 monitor type
  2310.     000 PS/2 mono
  2311.     001 PS/2 color
  2312.     010 multi-sync
  2313.     011 Taxan 650 25kHz
  2314.     100 RGB
  2315.     101 mono
  2316.     110 EGA
  2317.     111 Compaq internal
  2318.  
  2319. Format of ATI VGA Wonder video mode table:
  2320. Offset    Size    Description
  2321.  00h    BYTE    number of columns
  2322.  01h    BYTE    maximum row (number of rows - 1)
  2323.  02h    BYTE    scan lines per row
  2324.  03h    WORD    video buffer size in bytes
  2325.  05h  4 BYTEs    values for Sequencer registers 1-4
  2326.  09h    BYTE    value for Miscellaneous Output register
  2327.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  2328.         00h horizontal total size (chars)
  2329.         01h horizontal displayed (chars)
  2330.         02h horizontal sync position (chars)
  2331.         03h horizontal sync width (chars)
  2332.         04h vertical total size (char rows)
  2333.         05h vertical total adjust (scan lines)
  2334.         06h vertical displayed (char rows)
  2335.         07h vertical sync position (char rows)
  2336.         08h interlace mode
  2337.         09h max scan line in row
  2338.         0Ah cursor start scan line
  2339.         0Bh cursor end scan line
  2340.         0Ch screen memory start (high)
  2341.         0Dh screen memory start (low)
  2342.         0Eh cursor address (high)
  2343.         0Fh cursor address (low)
  2344.         10h light pen (high)
  2345.         11h light pen (low)
  2346.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  2347.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  2348. --------V-1012--BL74-------------------------
  2349. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2350.     AH = 12h
  2351.     BL = 74h
  2352. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2353.       crash the system on this function
  2354. --------V-1012--BL80-------------------------
  2355. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2356.     AH = 12h
  2357.     BL = 80h
  2358. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2359.       crash the system on this function
  2360. --------V-1012--BL80-------------------------
  2361. INT 10 - Cirrus Logic BIOS - INQUIRE VGA TYPE
  2362.     AH = 12h
  2363.     BL = 80h
  2364. Return: AX = controller type (see below)
  2365.     BL = silicon revision number (bit 7 set if not available)
  2366. SeeAlso: AH=12h/BL=81h,AH=12h/BL=82h,AH=12h/BL=85h,AH=12h/BL=9Ah,AH=12h/BL=A1h
  2367.  
  2368. Values for controller type:
  2369.  0000h    no extended alternate select support
  2370.  0002h    510/520
  2371.  0003h    610/620
  2372.  0004h    5320
  2373.  0005h    6410
  2374.  0006h    5410
  2375.  0007h    6420
  2376.  0008h    6412
  2377.  0010h    5401
  2378.  0011h    5402
  2379.  0012h    5420
  2380.  0013h    5422
  2381.  0014h    5424
  2382.  0015h    5426
  2383.  0016h    5420r1
  2384.  0017h    5402r1
  2385.  0018h    5428
  2386.  0020h    6205/15/25
  2387.  0030h    5432
  2388.  0031h    5434
  2389. --------V-1012--BL81-------------------------
  2390. INT 10 - Cirrus Logic BIOS - GET BIOS VERSION NUMBER
  2391.     AH = 12h
  2392.     BL = 81h
  2393. Return: AH = BIOS major version
  2394.     AL = BIOS minor version
  2395. SeeAlso: AH=12h/BL=80h,AH=12h/BL=82h
  2396. --------V-1012--BL82-------------------------
  2397. INT 10 - Cirrus Logic BIOS - GET DESIGN REVISION CODE
  2398.     AH = 12h
  2399.     BL = 82h
  2400. Return: AL = chip revision
  2401. SeeAlso: AH=12h/BL=80h,AH=12h/BL=81h
  2402. --------V-1012--BL85-------------------------
  2403. INT 10 - Cirrus Logic BIOS - GET INSTALLED MEMORY
  2404.     AH = 12h
  2405.     BL = 85h
  2406. Return: AL = number of 64K banks of video memory
  2407. SeeAlso: AH=12h/BL=80h,AH=12h,BL=93h
  2408. --------V-1012--BL93-------------------------
  2409. INT 10 - Cirrus Logic BIOS - FORCE 8-BIT OR 16-BIT OPERATION
  2410.     AH = 12h
  2411.     BL = 93h
  2412.     AL = new I/O width (00h = 16 bits, 01h = 8 bits)
  2413. SeeAlso: AH=12h/BL=9Ah
  2414. --------V-1012--BL9A-------------------------
  2415. INT 10 - Cirrus Logic BIOS - GET USER OPTIONS
  2416.     AH = 12h
  2417.     BL = 9Ah
  2418. Return: AX = options word 1 (see below)
  2419.     CX = options word 2 (see below)
  2420. SeeAlso: AH=12h/BL=80h,AH=12h/BL=93h,AH=12h/BL=A0h,AH=12h/BL=A3h,AH=12h/BL=A4h
  2421.  
  2422. Bitfields for options word 1:
  2423.  bits 0,1 reserved
  2424.  bits 2-4 monitor type
  2425.  bits 5-6 maximum vertical resolution
  2426.  bits 7-9 reserved
  2427.  bit 10    force 8-bit operation
  2428.  bits 11-13 reserved
  2429.  bit 14    vertical refresh frequency at 640x480
  2430.  bit 15    reserved
  2431.  
  2432. Bitfields for options word 2:
  2433.  bits 0-3 reserved
  2434.  bits 4-5 vertical refresh frequency at 1280x1024
  2435.  bits 6-10 reserved
  2436.  bits 11-12 vertical refresh frequency at 800x600
  2437.  bits 13-15 vertical refresh frequency at 1024x768
  2438. --------V-1012--BLA0-------------------------
  2439. INT 10 - Cirrus Logic BIOS - GET VIDEO MODE AVAILABILITY
  2440.     AH = 12h
  2441.     BL = A0h
  2442.     AL = video mode number (00h-7Fh)
  2443. Return: AH bit 0: video mode supported
  2444.     BX = offset of BIOS subroutine to fixup standard video parameters
  2445.         (call subroutine with DS:SI and ES:DI as returned by this call)
  2446.     DS:SI -> standard video parameters or FFFFh:FFFFh
  2447.     ES:DI -> supplemental video parameters or FFFFh:FFFFh
  2448. SeeAlso: AH=00h,AH=12h/BL=9Ah,AH=12h/BL=A1h
  2449. --------V-1012--BLA1-------------------------
  2450. INT 10 - Cirrus Logic BIOS - READ MONITOR TYPE AND ID FROM 15-PIN CONNECTOR
  2451.     AH = 12h
  2452.     BL = A1h
  2453. Return: BH = monitor ID (see below)
  2454.     BL = monitor type (00h color, 01h grayscale, 02h no display)
  2455. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A2h
  2456.  
  2457. Values for monitor ID:
  2458.  00h-08h reserved
  2459.  09h    IBM 8604/8507 or equivalent
  2460.  0Ah    IBM 8514 or equivalent
  2461.  0Bh    IBM 8515 or equivalent
  2462.  0Dh    IBM 8503 or equivalent
  2463.  0Eh    IBM 8512/8513 or equivalent
  2464.  0Fh    no monitor
  2465. --------V-1012--BLA2-------------------------
  2466. INT 10 - Cirrus Logic BIOS - SET MONITOR HORIZONTAL RETRACE FREQUENCY
  2467.     AH = 12h
  2468.     BL = A2h
  2469.     AL = retrace rate
  2470.         00h standard VGA (31.5 kHz)
  2471.         01h 8514-compatible (31.5 kHz and 35.5 kHz interlaced)
  2472.         02h SuperVGA (31.5-35.1 kHz)
  2473.         03h extended SuperVGA (31.5-35.5 kHz)
  2474.         04h multi-frequency (31.5-37.8 kHz)
  2475.         05h extended multi-frequency (31.5-48.0 kHz)
  2476.         06h super multi-frequency (31.5-56.0 kHz)
  2477.         07h extended super multi-frequency (31.5-64.0 kHz)
  2478. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A0h,AH=12h/BL=A4h
  2479. --------V-1012--BLA2-------------------------
  2480. INT 10 - Cirrus Logic BIOS - SET VGA REFRESH
  2481.     AH = 12h
  2482.     BL = A3h
  2483.     AL = refresh rate for 640x480 (00h normal, 01h high)
  2484. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A4h
  2485. --------V-1012--BLA4-------------------------
  2486. INT 10 - Cirrus Logic BIOS - SET MONITOR TYPE
  2487.     AH = 12h
  2488.     BL = A4h
  2489.     AL bits 3-0 = maximum vertical resolution
  2490.         (0 = 480 scanlines, 1 = 600, 2 = 768, 3 = 1024, other reserved)
  2491.     AL bits 7-4 = vertical refresh at 640x480
  2492.         (0 = 60Hz, 1 = 72Hz, other reserved)
  2493.     BH bits 3-0 = vertical refresh at 800x600
  2494.         (0 = 56Kz, 1 = 60Hz, 2 = 72Hz, other reserved)
  2495.     BH bits 7-4 = vertical refresh at 1024x768
  2496.         (0=87Hz-int, 1=60Hz, 2=70Hz, 3=72Hz, 4=76Hz, other reserved)
  2497.     CH bits 4-7 = vertical refresh at 1280x1024
  2498.         (0=87Hz-int, 1=60Hz, 2=70Hz, other reserved)
  2499. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h
  2500. --------V-1012--BLBE-------------------------
  2501. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2502.     AH = 12h
  2503.     BL = BEh
  2504. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2505.       crash the system on this function
  2506. --------V-1012--BLC6-------------------------
  2507. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2508.     AH = 12h
  2509.     BL = C6h
  2510. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2511.       crash the system on this function
  2512. --------V-1012--BLF0-------------------------
  2513. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2514.     AH = 12h
  2515.     BL = F0h
  2516. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2517.       crash the system on this function
  2518. --------V-1013-------------------------------
  2519. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  2520.     AH = 13h
  2521.     AL = write mode
  2522.        bit 0: update cursor after writing
  2523.        bit 1: string contains alternating characters and attributes
  2524.     BH = page number
  2525.     BL = attribute if string contains only characters
  2526.     CX = number of characters in string
  2527.     DH,DL = row,column at which to start writing
  2528.     ES:BP -> string to write
  2529. Notes:    recognizes CR, LF, BS, and bell
  2530.     also available PC or XT with EGA or higher
  2531.     HP 95LX only supports write mode 00h
  2532. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  2533.       the active page rather than the requested page
  2534. SeeAlso: AH=09h,AH=0Ah
  2535. --------V-101400-----------------------------
  2536. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  2537.     AX = 1400h
  2538.     ES:DI -> character font
  2539.     BH = number of bytes per character
  2540.         08h or 10h (Compaq)
  2541.     BL = 00h load main font (block 0)
  2542.          01h load alternate font (block 1)
  2543.     CX = number of characters to store
  2544.     DX = character offset into RAM font area
  2545. SeeAlso: AH=11h,AX=1401h
  2546. --------V-101401-----------------------------
  2547. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  2548.     AX = 1401h
  2549.     BL = font to load
  2550.         00h main font (block 0)
  2551.         01h alternate font (block 1)
  2552. SeeAlso: AH=11h,AX=1400h
  2553. --------V-101402-----------------------------
  2554. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  2555.     AX = 1402h
  2556.     BL = function
  2557.         00h ignore high intensity attribute
  2558.         01h map high intensity to underscore
  2559.         02h map high intensity to reverse video
  2560.         03h map high intensity to selected alternate font
  2561.         B0h half intensity (Compaq)
  2562.         B1h toggle active intensity bit interpretation (CP386)
  2563. --------V-1015-------------------------------
  2564. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  2565.     AH = 15h
  2566. Return: AX = alternate display adapter type (see below)
  2567.     ES:DI -> parameter table (see below)
  2568. SeeAlso: AH=1Bh
  2569.  
  2570. Values for alternate display adapter type:
  2571.  0000h    none
  2572.  5140h    LCD
  2573.  5153h    CGA
  2574.  5151h    mono
  2575.  
  2576. Format of display parameter table:
  2577. Offset    Size    Description
  2578.  00h    WORD    monitor model number
  2579.  02h    WORD    vertical pixels per meter
  2580.  04h    WORD    horizontal pixels per meter
  2581.  06h    WORD    total vertical pixels
  2582.  08h    WORD    total horizontal pixels
  2583.  0Ah    WORD    horizontal pixel separation in micrometers
  2584.  0Ch    WORD    vertical pixel separation in micrometers
  2585. --------V-1015-------------------------------
  2586. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  2587.     AH = 15h
  2588.     AL = superimpose mode
  2589.         00h show graphics screen
  2590.         01h show text screen
  2591.         02h show text screen superimposed on graphics screen
  2592. --------V-101A00-----------------------------
  2593. INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  2594.     AX = 1A00h
  2595. Return: AL = 1Ah if function was supported
  2596.         BL = active display code (see below)
  2597.         BH = alternate display code
  2598. SeeAlso: AH=12h/BH=35h,AX=1A01h,AH=1Bh
  2599.  
  2600. Values for display combination code:
  2601.  00h    no display
  2602.  01h    monochrome adapter w/ monochrome display
  2603.  02h    CGA w/ color display
  2604.  03h    reserved
  2605.  04h    EGA w/ color display
  2606.  05h    EGA w/ monochrome display
  2607.  06h    PGA w/ color display
  2608.  07h    VGA w/ monochrome analog display
  2609.  08h    VGA w/ color analog display
  2610.  09h    reserved
  2611.  0Ah    MCGA w/ digital color display
  2612.  0Bh    MCGA w/ monochrome analog display
  2613.  0Ch    MCGA w/ color analog display
  2614.  FFh    unknown display type
  2615. --------V-101A01-----------------------------
  2616. INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  2617.     AX = 1A01h
  2618.     BL = active display code (see AX=1A00h)
  2619.     BH = alternate display code
  2620. Return: AL = 1Ah if function was supported
  2621. SeeAlso: AH=12h/BH=35h,AX=1A00h
  2622. --------V-101B-------------------------------
  2623. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  2624.     AH = 1Bh
  2625.     BX = implementation type
  2626.         0000h return funtionality/state information
  2627.     ES:DI -> 64-byte buffer for state information (see below)
  2628. Return: AL = 1Bh if function supported
  2629.         ES:DI buffer filled with state information
  2630. BUG:    Trident 8900 (BIOS D3.0 11/12/91) and Trident 9000 (C3.0 10/25/91)
  2631.       do not correctly set the fields at offsets 27h and 29h of the
  2632.       state information
  2633. SeeAlso: AH=15h,AX=1A00h,AX=1F01h
  2634.  
  2635. Format of state information:
  2636. Offset    Size    Description
  2637.  00h    DWORD    address of static funtionality table (see below)
  2638.  04h    BYTE    video mode in effect
  2639.  05h    WORD    number of columns
  2640.  07h    WORD    length of regen buffer in bytes
  2641.  09h    WORD    starting address of regen buffer
  2642.  0Bh    WORD    cursor position for page 0
  2643.  0Dh    WORD    cursor position for page 1
  2644.  0Fh    WORD    cursor position for page 2
  2645.  11h    WORD    cursor position for page 3
  2646.  13h    WORD    cursor position for page 4
  2647.  15h    WORD    cursor position for page 5
  2648.  17h    WORD    cursor position for page 6
  2649.  19h    WORD    cursor position for page 7
  2650.  1Bh    WORD    cursor type
  2651.  1Dh    BYTE    active display page
  2652.  1Eh    WORD    CRTC port address
  2653.  20h    BYTE    current setting of register (3?8)
  2654.  21h    BYTE    current setting of register (3?9)
  2655.  22h    BYTE    number of rows
  2656.  23h    WORD    bytes/character
  2657.  25h    BYTE    display combination code of active display
  2658.  26h    BYTE    DCC of alternate display
  2659.  27h    WORD    number of colors supported in current mode
  2660.  29h    BYTE    number of pages supported in current mode
  2661.  2Ah    BYTE    number of scan lines active
  2662.         (0,1,2,3) = (200,350,400,480)
  2663.         Tseng ET3000: (4,5,6 = 512,600,768)
  2664.  2Bh    BYTE    primary character block
  2665.  2Ch    BYTE    secondary character block
  2666.  2Dh    BYTE    miscellaneous flags (see below)
  2667.  2Eh  3 BYTEs    reserved (00h)
  2668.  31h    BYTE    video memory available
  2669.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  2670.  32h    BYTE    save pointer state flags (see below)
  2671.  33h 13 BYTEs    reserved (00h)
  2672.  
  2673. Bitfields for miscellaneous flags:
  2674.  bit 0    all modes on all displays on
  2675.  bit 1    gray summing on
  2676.  bit 2    monochrome display attached
  2677.  bit 3    default palette loading disabled
  2678.  bit 4    cursor emulation enabled
  2679.  bit 5    0 = intensity; 1 = blinking
  2680.  bit 6    PS/2 P70 plasma display (without 9-dot wide font) active
  2681.  bit 7    reserved
  2682.  
  2683. Bitfields for save pointer state flags:
  2684.  bit 0    512 character set active
  2685.  bit 1    dynamic save area present
  2686.  bit 2    alpha font override active
  2687.  bit 3    graphics font override active
  2688.  bit 4    palette override active
  2689.  bit 5    DCC override active
  2690.  bits 6-7 reserved
  2691.  
  2692. Format of Static Functionality Table:
  2693. Offset    Size    Description
  2694.  00h    BYTE    modes supported #1
  2695.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  2696.  01h    BYTE    modes supported #2
  2697.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  2698.  02h    BYTE    modes supported #3
  2699.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  2700.         bit 4 to bit 7 reserved
  2701.  03h    BYTE    (IBM) reserved
  2702.         (Tseng ET3000/4000) modes supported #4
  2703.                 bit 0 to bit 7 = modes 18h-1Fh supported
  2704.  04h    BYTE    (IBM) reserved
  2705.         (Tseng ET3000/4000) modes supported #5
  2706.                 bit 0 to bit 7 = modes 20h-27h supported
  2707.  05h    BYTE    (IBM) reserved
  2708.         (Tseng ET3000/4000) modes supported #6
  2709.                 bit 0 to bit 7 = modes 28h-2Fh supported
  2710.  06h    BYTE    (IBM) reserved
  2711.         (Tseng ET3000/4000) modes supported #7
  2712.                 bit 0 to bit 7 = modes 30h-37h supported
  2713.  07h    BYTE    scan lines supported
  2714.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  2715.  08h    BYTE    total number of character blocks available in text modes
  2716.  09h    BYTE    maximum number of active character blocks in text modes
  2717.  0Ah    WORD    miscellaneous function support flags (see below)
  2718.  0Ch    WORD    reserved
  2719.  0Eh    BYTE    save pointer function flags (see below)
  2720.  0Fh    BYTE    reserved
  2721.  
  2722. Bitfields for miscellaneous function support flags:
  2723.  bit 0    all modes on all displays function supported
  2724.  bit 1    gray summing function supported
  2725.  bit 2    character font loading function supported
  2726.  bit 3    default palette loading enable/disable supported
  2727.  bit 4    cursor emulation function supported
  2728.  bit 5    EGA palette present
  2729.  bit 6    color palette present
  2730.  bit 7    color paging function supported
  2731.  bit 8    light pen supported
  2732.  bit 9    save/restore state function 1Ch supported
  2733.  bit 10 intensity blinking function supported
  2734.  bit 11 Display Combination Code supported
  2735.  bits 12-15 reserved
  2736.  
  2737. Bitfields for save pointer function flags:
  2738.  bit 0    512 character set supported
  2739.  bit 1    dynamic save area supported
  2740.  bit 2    alpha font override supported
  2741.  bit 3    graphics font override supported
  2742.  bit 4    palette override supported
  2743.  bit 5    DCC extension supported
  2744.  bits 6-7 reserved
  2745. --------V-101C-------------------------------
  2746. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  2747.     AH = 1Ch
  2748.     AL = function
  2749.         00h return state buffer size
  2750.         Return: BX = number of 64-byte blocks needed
  2751.         01h save video state
  2752.         ES:BX -> buffer
  2753.         02h restore video state
  2754.         ES:BX -> buffer containing previously saved state
  2755.     CX = requested states
  2756.          bit 0 video hardware
  2757.          bit 1 BIOS data areas
  2758.          bit 2 color registers and DAC state
  2759.          bits 3-15 reserved
  2760. Return: AL = 1Ch if function supported
  2761. Notes:    many BIOSes corrupt the video registers when saving the state, so a
  2762.       program should restore the state immediately after saving it (the
  2763.       saved data is uncorrupted)
  2764.     the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
  2765.  
  2766. Format of video hardware state:
  2767. Offset    Size    Description
  2768.  00h    BYTE    sequencer index register
  2769.  01h    BYTE    CRTC index register
  2770.  02h    BYTE    graphics controller index register
  2771.  03h    BYTE    attribute controller index register
  2772.  04h    BYTE    feature controller register
  2773.  05h  4 BYTEs    sequencer registers
  2774.  09h    BYTE    sequencer register 0
  2775.  0Ah 25 BYTEs    CRTC registers 0-8
  2776.  23h 16 BYTEs    palette registers 00h-0Fh
  2777.  33h  4 BYTEs    attribute registers 10h-13h
  2778.  37h  9 BYTEs    graphics controller registers 0-8
  2779.  40h    BYTE    CRTC base address (low)
  2780.  41h    BYTE    CRTC base address (high)
  2781.  42h    BYTE    plane 0 latch
  2782.  43h    BYTE    plane 1 latch
  2783.  44h    BYTE    plane 2 latch
  2784.  45h    BYTE    plane 3 latch
  2785.  
  2786. Format of DAC state:
  2787. Offset    Size    Description
  2788.  00h    BYTE    read/write mode DAC
  2789.  01h    BYTE    pixel address
  2790.  02h    BYTE    pixel mask
  2791.  03h 768 BYTEs    color data (256 triples)
  2792. 303h    BYTE    color select register
  2793. --------V-101D-------------------------------
  2794. INT 10 - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS
  2795.     AH = 1Dh
  2796.     AL = video mode
  2797.     ES = caller's segment
  2798. Return: nothing
  2799. Note:    the caller's segment contains at offset 5Ch (FCB field in PSP)
  2800.       or 100h a table with sync parameters (BIOS looks at both offsets)
  2801.  
  2802. Format of sync table:
  2803. Offset    Size    Description
  2804.  00h  9 BYTEs    ID contains string 'ey5CENTER'
  2805.  09h  5 BYTEs    sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh
  2806.  0Bh  5 BYTEs    sync parameters for 800x600 modes 29h,30h,2Ah
  2807.  13h  5 BYTEs    sync parameters for 1024x768 modes 37h,38h
  2808. --------V-101D-------------------------------
  2809. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2810.     AH = 1Dh
  2811. Note:    this version of the BIOS jumps to a random location on this function
  2812.       due to a fencepost error
  2813. --------V-101F00-----------------------------
  2814. INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
  2815.     AX = 1F00h
  2816. Return: AL = 1Fh if supported
  2817.         BX = number of bytes of DMQS data
  2818. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2819.       and later models.
  2820. SeeAlso: AX=1F01h
  2821. --------V-101F01-----------------------------
  2822. INT 10 - VIDEO - XGA - READ DMQS DATA
  2823.     AX = 1F01h
  2824.     ES:DI -> user buffer for return data (call AX=1F00h for size)
  2825. Return: AL = 1Fh if function supported
  2826.     user buffer filled with DMQS data, see below.
  2827. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2828.       and later models.
  2829. SeeAlso: AH=1Bh,AX=1F00h,AX=3000h
  2830.  
  2831. Format of DMQS buffer:
  2832. Offset    Size    Description
  2833.  00h    WORD    offset (in bytes) to DMQS data for next XGA instance
  2834.  02h    BYTE    slot number
  2835.  03h    BYTE    XGA implementation function level identifier
  2836.  04h    BYTE    XGA implementation resolution level identifier
  2837.  05h    WORD    vendor identifier - identifies card vendor
  2838.  07h    WORD    vendor defined field
  2839.  09h    WORD    XGA adapter I/O register base address
  2840.  0Bh    WORD    XGA coprocessor register base address
  2841.         (paragraph--multiply by 10h to get physical address)
  2842.  0Dh    WORD    1 Megabyte system video memory aperture
  2843.         0000h if not allocated
  2844.         (Multiply by 100000h to get physical address)
  2845.  0Fh    WORD    4 Megabyte system video memory aperture
  2846.         0000h if not allocated
  2847.         (multiply by 100000h to get physical address)
  2848.  11h    WORD    video memory base address
  2849.         (multiply by 100000h to get physical address)
  2850.  13h    WORD    composite ID of the attached display
  2851.  15h    BYTE    amount of video memory available, in multiples of 256K bytes
  2852.  16h    DWORD    alternate XGA coprocessor register base address.  0 = none.
  2853.  1Ah    var    DMQS Data for further XGA Instances (as above)
  2854. Note:    "Instances" refers to the capability of having up to 8 XGA
  2855.       adapters in one computer.
  2856. --------V-103000CX0000-----------------------
  2857. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  2858.     AX = 3000h
  2859.     CX = 0000h
  2860.     DX = 0000h
  2861. Return: CX:DX -> 3270PC configuration table (see below)
  2862.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  2863. SeeAlso: AX=1F01h
  2864.  
  2865. Format of 3270 PC configuration table:
  2866. Offset    Size    Description
  2867.  00h    BYTE    aspect ratio X
  2868.  01h    BYTE    aspect ratio Y
  2869.  02h    BYTE    monitor type (see below)
  2870.  03h    BYTE    reserved
  2871.  04h    BYTE    adapter ID
  2872.         00h = 5151/5272 adapter
  2873.         04h = 5151/5272 with XGA adapter
  2874.         30h = 3295 or 3270PC G/GX adapter
  2875.  05h    BYTE    reserved
  2876.  06h    BYTE    function flags 1 (see below)
  2877.  07h    BYTE    function flags 2
  2878.         bit 6: GPI graphics supported
  2879.  08h    WORD    segment address of Control Program Level table (see below)
  2880.  0Ah 10 BYTEs    reserved
  2881.  
  2882. Values for monitor type:
  2883.  00h    5151 (mono) or 5272 (color)
  2884.  01h    3295
  2885.  02h    5151 or 5272 with XGA (???) graphics adapter
  2886.  03h    5279 with 3270PC G adapter
  2887.  04h    5379 model C01 with 3270PC GX adapter
  2888.  05h    5379 model M01 with 3270PC GX adapter
  2889.  07h    non-3270PC with 3270 Workstation Program
  2890.  FFh    3270PC Control Program not loaded
  2891.  
  2892. Bitfields for function flags 1:
  2893.  bit 7    mono text, 1 page
  2894.  bit 6    color text, 1 page
  2895.  bit 5    color text, 4 pages
  2896.  bit 4    CGA color graphics
  2897.  bit 3    720x350 two-color graphics
  2898.  bit 2    360x350 four-color graphics
  2899.  bit 1    720x350 eight-color graphics
  2900.  
  2901. Format of Control Program Level table:
  2902. Offset    Size    Description
  2903.  00h    WORD    program version
  2904.         02xxh = 3270PC Control Program v2.xx
  2905.         03xxh = 3270PC Control Program v3.xx
  2906.         04xxh = 3270 Workstation Program v1.xx
  2907.  02h    BYTE    Control Program ID (00h)
  2908.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  2909. --------a-103800-----------------------------
  2910. INT 10 - Tinytalk Personal v1.09f+ - GET CONFIGURATION INFO
  2911.     AX = 3800h
  2912. Return: ES:DI -> configuration info (see below)
  2913. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  2914. Notes:    this call is also used as the installation check by verifying that the
  2915.       returned ES:DI points at valid configuration info
  2916.     Tinytalk v1.09f ignores AL and always returns the configuration info;
  2917.       v1.10 adds several subfunctions selected with AL
  2918. SeeAlso: AX=3801h,AX=3803h,AX=3806h,AH=39h,INT 14/AX=F0F1h
  2919. SeeAlso: INT 2F/FB00h"AutoBraille"
  2920. Index:    installation check;Tinytalk Personal
  2921.  
  2922. Format of configuration info:
  2923. Offset    Size    Description
  2924.  00h  8 BYTEs    signature "TTCONFIG"
  2925.  08h    WORD    size of configuration data, not counting signature, this WORD,
  2926.         or the following byte
  2927.  0Ah    BYTE    ???
  2928.  0Bh    ???    configuration data
  2929. --------a-103801-----------------------------
  2930. INT 10 - Tinytalk Personal v1.10 - ???
  2931.     AX = 3801h
  2932.     DL = ???
  2933. Return: ???
  2934. SeeAlso: AX=3800h,AX=3802h
  2935. --------a-103802-----------------------------
  2936. INT 10 - Tinytalk Personal v1.10 - ???
  2937.     AX = 3802h
  2938.     DL = ???
  2939. Return: ???
  2940. SeeAlso: AX=3800h,AX=3801h
  2941. --------a-103803-----------------------------
  2942. INT 10 - Tinytalk Personal v1.10 - GET ???
  2943.     AX = 3803h
  2944. Return: AL = ???
  2945. SeeAlso: AX=3800h,AX=3804h,AX=3805h
  2946. --------a-103804-----------------------------
  2947. INT 10 - Tinytalk Personal v1.10 - GET ???
  2948.     AX = 3804h
  2949. Return: AX = ???
  2950. SeeAlso: AX=3800h,AX=3803h,AX=3805h
  2951. --------a-103805-----------------------------
  2952. INT 10 - Tinytalk Personal v1.10 - GET ???
  2953.     AX = 3805h
  2954. Return: AL = ???
  2955. SeeAlso: AX=3800h,AX=3803h,AX=3804h
  2956. --------a-103806-----------------------------
  2957. INT 10 - Tinytalk Personal v1.10 - ???
  2958.     AX = 3806h
  2959.     ES:DX -> ASCIZ ???
  2960. Return: ???
  2961. SeeAlso: AX=3800h
  2962. --------a-1039-------------------------------
  2963. INT 10 - Tinytalk Personal v1.10 - ???
  2964.     AH = 39h
  2965. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  2966. Note:    this function was a NOP in TTDEMO.EXE, but may be implemented in other
  2967.       variants of Tinytalk
  2968. --------V-1040-------------------------------
  2969. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  2970.     AH = 40h
  2971. Desc:    switch the Hercules Graphics Card into graphics mode (720x348)
  2972. SeeAlso: AH=00h,AH=41h
  2973. Index:    video modes
  2974. --------V-1041-------------------------------
  2975. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  2976.     AH = 41h
  2977. Desc:    switch the Hercules Graphics Card into text mode
  2978. SeeAlso: AH=00h,AH=40h
  2979. Index:    video modes
  2980. --------V-1042-------------------------------
  2981. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  2982.     AH = 42h
  2983. SeeAlso: AH=45h
  2984. --------V-1043-------------------------------
  2985. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  2986.     AH = 43h
  2987.     AL = page number (0,1)
  2988. Desc:    specify which of the two pages of video memory is to be used for
  2989.       output
  2990. SeeAlso: AH=05h,AH=44h,AH=45h
  2991. --------V-1044-------------------------------
  2992. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  2993.     AH = 44h
  2994.     AL = drawing function
  2995.         00h clear pixels
  2996.         01h set pixels
  2997.         02h invert pixels
  2998. Desc:    specify how graphics output will change the display
  2999. SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
  3000. --------V-1045-------------------------------
  3001. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  3002.     AH = 45h
  3003.     AL = page number (0,1)
  3004. Desc:    specify which of the two pages of video memory is visible on screen
  3005. SeeAlso: AH=05h,AH=42h,AH=43h
  3006. --------V-1046-------------------------------
  3007. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  3008.     AH = 46h
  3009.     DI = x (0-720)
  3010.     BP = y (0-347)
  3011. Note:    function 44h determines operation and function 43h which page to use
  3012. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  3013. --------V-1047-------------------------------
  3014. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  3015.     AH = 47h
  3016.     DI = x (0-720)
  3017.     BP = y (0-347)
  3018. Return: AL = 00h pixel clear
  3019.     AL = 01h pixel set
  3020. Note:    function 43h specifies which page is used
  3021. SeeAlso: AH=0Dh,AH=46h
  3022. --------V-1048-------------------------------
  3023. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  3024.     AH = 48h
  3025.     DI = x (0-720)
  3026.     BP = y (0-347)
  3027. Desc:    specify the location from which to start the next graphics output
  3028. SeeAlso: AH=49h
  3029. --------V-1049-------------------------------
  3030. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  3031.     AH = 49h
  3032.     DI = x (0-720)
  3033.     BP = y (0-347)
  3034. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  3035.       use
  3036. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  3037. --------V-104A-------------------------------
  3038. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  3039.     AH = 4Ah
  3040.     DI = x coordinate of lower left corner
  3041.     BP = y coordinate of lower left corner
  3042.     BX = height in pixels
  3043.     CX = width in pixels
  3044. Desc:    draw a solid rectangle of the specified size at the given location
  3045. SeeAlso: AH=4Eh
  3046. --------V-104B-------------------------------
  3047. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  3048.     AH = 4Bh
  3049.     AL = character to display
  3050.     DI = x (0-720)
  3051.     BP = y (0-347)
  3052. Note:    unlike the other BIOS character functions character position is
  3053.       specified in pixels rather than rows and columns
  3054. SeeAlso: AH=09h,AH=0Ah
  3055. ----------104B-------------------------------
  3056. INT 10 - FRIEZE - API
  3057.     AH = 4Bh
  3058.     CL = function
  3059.         00h (v6.x-) print window
  3060.         AL = mode
  3061.             00h character
  3062.             01h normal
  3063.             02h sideways
  3064.         01h load window
  3065.         ES:BX -> ASCIZ filename from which to read
  3066.         02h save window
  3067.         ES:BX -> ASCIZ filename to which to write
  3068.         03h set print width
  3069.         AL = width in 1/4 inches
  3070.         04h set print height
  3071.         AL = height in 1/4 inches
  3072.         05h reserved
  3073.         06h set left margin
  3074.         AL = printout margin in 1/4 inches
  3075.         07h set window size
  3076.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  3077.         08h reserved
  3078.         09h set patterns
  3079.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  3080.         0Ah get patterns
  3081.         ES:BX -> 16-BYTE buffer for color correspondences
  3082.         0Bh set mode
  3083.         AL = mode
  3084.         0Ch (v7.41) ???
  3085.         AL = ???
  3086.             00h ??? (calls original INT 05)
  3087.             else ???
  3088.         0Dh (v7.41) ???
  3089.         AL = ???
  3090.             00h ??? (calls original INT 05)
  3091.             else ???
  3092.         0Eh (v7.41) ???
  3093.         ???
  3094.         0Fh get window
  3095.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  3096.         10h set print options
  3097.         ES:BX -> printer options in same format as FRIEZE cmdline
  3098.         11h initialize
  3099.         ES:BX -> three-WORD array from CARDS.DAT for HRes, VRes, code
  3100.         12h (v7.41) ???
  3101.         ???
  3102.         13h (v7.41) ???
  3103.         ???
  3104.         14h get version
  3105.         Return: AH = major version (00h if FRIEZE version before 7)
  3106.             AL = minor version
  3107.         15h set parameters
  3108.         ES:BX -> parameter table (see below)
  3109.         16h get parameters
  3110.         ES:BX -> buffer for parameter table (see below)
  3111.         17h get printer resolution
  3112.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  3113.         18h (v8.0 only) reserved
  3114.         50h (v7.41) get ???
  3115.         Return: AX = ???
  3116.         51h (v7.41) get ???
  3117.         Return: ES = ??? (seen 2348h)
  3118.             AX = ??? (seen 8432h)
  3119. Return: AX = status (see below)
  3120. SeeAlso: AH=0Fh/SI=F123h
  3121.  
  3122. Values for status:
  3123.  00h    successful
  3124.  01h    user aborted printout with ESC
  3125.  02h    reserved
  3126.  03h    file read error
  3127.  04h    file write error or printer error
  3128.  05h    file not found
  3129.  06h    invalid header (not an image or wrong screen mode) or can't create file
  3130.  07h    file close error
  3131.  08h    disk error
  3132.  09h    (v7.0+) printer error
  3133.  0Ah    invalid function
  3134.  0Bh    (v7.0+) can't create file
  3135.  0Ch    (v7.0+) wrong video mode
  3136.  
  3137. Format of parameter table:
  3138. Offset    Size    Description
  3139.  00h    WORD    top margin (1/100 inch)
  3140.  02h    WORD    left margin (1/100 inch)
  3141.  04h    WORD    horizontal size (1/100 inch)
  3142.  06h    WORD    vertical size (1/100 inch)
  3143.  08h    WORD    quality/draft mode
  3144.         00h draft mode
  3145.         01h quality mode
  3146.         02h use horizontal/vertical resolution for output resolution
  3147.  0Ah    WORD    printer horizontal resolution (dots per inch)
  3148.  0Ch    WORD    printer vertical resolution (dots per inch)
  3149.  0Eh    WORD    reserved (FFFFh)
  3150. Note:    any field which should remain unchanged may be filled with FFFFh
  3151. --------V-104C-------------------------------
  3152. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  3153.     AH = 4Ch
  3154.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  3155.     DI = x coordinate of center
  3156.     BP = y coordinate of center
  3157.     BX = radius
  3158. SeeAlso: AH=49h,AH=4Dh
  3159. --------V-104D-------------------------------
  3160. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  3161.     AH = 4Dh
  3162.     DI = x of center
  3163.     BP = y of center
  3164.     BX = radius
  3165. SeeAlso: AH=49h,AH=4Ch
  3166. --------V-104E-------------------------------
  3167. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  3168.     AH = 4Eh
  3169.     DI = x coordinate of an interior point
  3170.     BP = y coordinate of an interior point
  3171. Desc:    fill a convex polygonal area bounded by a contiguous line of the
  3172.       opposite color with the border color
  3173. Note:    the first fill makes the figure solid, the second erases it
  3174. SeeAlso: AH=4Ah
  3175. --------V-104F00-----------------------------
  3176. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  3177.     AX = 4F00h
  3178.     ES:DI -> 256-byte buffer for SuperVGA information (see below)
  3179. Return: AL = 4Fh function supported
  3180.     AH = status
  3181.         00h successful
  3182.         ES:DI buffer filled
  3183.         01h failed
  3184. Desc:    determine whether VESA BIOS extensions are present and the capabilities
  3185.       supported by the display adapter
  3186. SeeAlso: AX=4F01h,AX=7F00h
  3187. Index:    installation check;VESA
  3188.  
  3189. Format of SuperVGA information:
  3190. Offset    Size    Description
  3191.  00h  4 BYTEs    signature ('VESA')
  3192.  04h    WORD    VESA version number
  3193.  06h    DWORD    pointer to OEM name
  3194.         "761295520" for ATI
  3195.  0Ah  4 BYTEs    capabilities
  3196.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  3197.         (list of words terminated with FFFFh)
  3198.  12h 238 BYTEs    reserved
  3199. Note:    the list of supported video modes is stored in the reserved portion of
  3200.       the SuperVGA information record by some implementations, and it may
  3201.       thus be necessary to either copy the mode list or use a different
  3202.       buffer for all subsequent VESA calls
  3203. --------V-104F01-----------------------------
  3204. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  3205.     AX = 4F01h
  3206.     CX = SuperVGA video mode
  3207.     ES:DI -> 256-byte buffer for mode information (see below)
  3208. Return: AL = 4Fh function supported
  3209.     AH = status
  3210.         00h successful
  3211.         ES:DI buffer filled
  3212.         01h failed
  3213. Desc:    determine the attributes of the specified video mode
  3214. SeeAlso: AX=4F00h,AX=4F02h
  3215.  
  3216. Format of mode information:
  3217. Offset    Size    Description
  3218.  00h    WORD    mode attributes
  3219.         bit 0: mode supported
  3220.         bit 1: optional information available
  3221.         bit 2: BIOS output supported
  3222.         bit 3: set if color, clear if monochrome
  3223.         bit 4: set if graphics mode, clear if text mode
  3224.  02h    BYTE    window A attributes
  3225.         bit 0: exists
  3226.         bit 1: readable
  3227.         bit 2: writable
  3228.         bits 3-7 reserved
  3229.  03h    BYTE    window B attributes (as for window A)
  3230.  04h    WORD    window granularity in KB
  3231.  06h    WORD    window size in KB
  3232.  08h    WORD    start segment of window A
  3233.  0Ah    WORD    start segment of window B
  3234.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  3235.  10h    WORD    bytes per scan line
  3236. ---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
  3237.  12h    WORD    width in pixels
  3238.  14h    WORD    height in pixels
  3239.  16h    BYTE    width of character cell in pixels
  3240.  17h    BYTE    height of character cell in pixels
  3241.  18h    BYTE    number of memory planes
  3242.  19h    BYTE    number of bits per pixel
  3243.  1Ah    BYTE    number of banks
  3244.  1Bh    BYTE    memory model type (see below)
  3245.  1Ch    BYTE    size of bank in KB
  3246.  1Dh    BYTE    number of image pages
  3247.  1Eh    BYTE    reserved (0)
  3248. ---VBE v1.2+---
  3249.  1Fh    BYTE    red mask size
  3250.  20h    BYTE    red field position
  3251.  21h    BYTE    green mask size
  3252.  22h    BYTE    green field size
  3253.  23h    BYTE    blue mask size
  3254.  24h    BYTE    blue field size
  3255.  25h    BYTE    reserved mask size
  3256.  26h    BYTE    reserved mask position
  3257.  27h    BYTE    direct color mode info
  3258.  28h    BYTE    reserved (0)
  3259.  
  3260. Values for memory model type:
  3261.  00h    text
  3262.  01h    CGA graphics
  3263.  02h    HGC graphics
  3264.  03h    16-color (EGA) graphics
  3265.  04h    packed pixel graphics
  3266.  05h    "sequ 256" (non-chain 4) graphics
  3267.  06h    direct color (HiColor, 24-bit color)
  3268.  07h    YUV (luminance-chrominance, also called YIQ)
  3269.  08h-0Fh reserved for VESA
  3270.  10h-FFh OEM memory models
  3271. --------V-104F02-----------------------------
  3272. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  3273.     AX = 4F02h
  3274.     BX = mode
  3275.         bit 15 set means don't clear video memory
  3276. Return: AL = 4Fh function supported
  3277.     AH = status
  3278.         00h successful
  3279.         01h failed
  3280. SeeAlso: AX=4F01h,AX=4F03h
  3281.  
  3282. Values for VESA video mode:
  3283.  00h-FFh OEM video modes (see AH=00h)
  3284.  100h    640x400x256
  3285.  101h    640x480x256
  3286.  102h    800x600x16
  3287.  103h    800x600x256
  3288.  104h    1024x768x16
  3289.  105h    1024x768x256
  3290.  106h    1280x1024x16
  3291.  107h    1280x1024x256
  3292.  108h    80x60 text
  3293.  109h    132x25 text
  3294.  10Ah    132x43 text
  3295.  10Bh    132x50 text
  3296.  10Ch    132x60 text
  3297. ---VBE v1.2---
  3298.  10Dh    320x200x32K
  3299.  10Eh    320x200x64K
  3300.  10Fh    320x200x16M
  3301.  110h    640x480x32K
  3302.  111h    640x480x64K
  3303.  112h    640x480x16M
  3304.  113h    800x600x32K
  3305.  114h    800x600x64K
  3306.  115h    800x600x16M
  3307.  116h    1024x768x32K
  3308.  117h    1024x768x64K
  3309.  118h    1024x768x16M
  3310.  119h    1280x1024x32K
  3311.  11Ah    1280x1024x64K
  3312.  11Bh    1280x1024x16M
  3313. Index:    video modes
  3314.  
  3315. Values for S3 OEM video mode:
  3316.  201h    640x480x256
  3317.  202h    800x600x16
  3318.  203h    800x600x256
  3319.  204h    1024x768x16
  3320.  205h    1024x768x256
  3321.  206h    1280x960x16
  3322.  208h    1280x1024x16
  3323.  301h    640x480x32K
  3324. Index:    video modes
  3325. --------V-104F03-----------------------------
  3326. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  3327.     AX = 4F03h
  3328. Return: AL = 4Fh function supported
  3329.     AH = status
  3330.         00h successful
  3331.         01h failed
  3332.     BX = video mode (see AX=4F02h)
  3333. SeeAlso: AX=4F02h
  3334. --------V-104F04-----------------------------
  3335. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  3336.     AX = 4F04h
  3337.     DL = subfunction
  3338.         00h get state buffer size
  3339.         Return: BX = number of 64-byte blocks needed
  3340.         01h save video states
  3341.         ES:BX -> buffer
  3342.         02h restore video states
  3343.         ES:BX -> buffer
  3344.     CX = flags for states to save/restore
  3345.         bit 0: video hardware state
  3346.         bit 1: video BIOS data state
  3347.         bit 2: video DAC state
  3348.         bit 3: SuperVGA state
  3349. Return: AL = 4Fh function supported
  3350.     AH = status
  3351.         00h successful
  3352.         01h failed
  3353. --------V-104F05-----------------------------
  3354. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  3355.     AX = 4F05h
  3356.     BH = subfunction
  3357.         00h select video memory window
  3358.         DX = window address in video memory (in granularity units)
  3359.         01h get video memory window
  3360.         Return: DX = window address in video memory (in gran. units)
  3361.     BL = window number
  3362.         00h window A
  3363.         01h window B
  3364. Return: AL = 4Fh function supported
  3365.     AH = status
  3366.         00h successful
  3367.         01h failed
  3368. SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  3369. --------V-104F06-----------------------------
  3370. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH
  3371.     AX = 4F06h
  3372.     BL = function
  3373.         00h set scan line length
  3374.         CX = desired width in pixels
  3375.         01h get scan line length
  3376. Return: AL = 4Fh if function supported
  3377.     AH = status
  3378.         00h successful
  3379.         01h failed
  3380.     BX = bytes per scan line
  3381.     CX = number of pixels per scan line
  3382.     DX = maximum number of scan lines
  3383. Notes:    if the desired width is not achievable, the next larger width will be
  3384.       set
  3385.     the scan line may be wider than the visible area of the screen
  3386.     this function is valid in text modes, provided that values are
  3387.       multiplied by the character cell width/height
  3388. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  3389. --------V-104F07BH00-------------------------
  3390. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
  3391.     AX = 4F07h
  3392.     BH = 00h (reserved)
  3393.     BL = function
  3394.         00h set display start
  3395.         CX = leftmost displayed pixel in scan line
  3396.         DX = first displayed scan line
  3397.         01h get display start
  3398.         Return: BH = 00h
  3399.             CX = leftmost displayed pixel in scan line
  3400.             DX = first displayed scan line
  3401. Return: AL = 4Fh if function supported
  3402.     AH = status
  3403.         00h successful
  3404.         01h failed
  3405. Note:    this function is valid in text modes, provided that values are
  3406.       multiplied by the character cell width/height
  3407. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  3408. --------V-104F08-----------------------------
  3409. INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
  3410.     AX = 4F08h
  3411.     BL = function
  3412.         00h set DAC palette width
  3413.         BH = desired number of bits per primary color
  3414.         01h get DAC palette width
  3415. Return: AL = 4Fh if function supported
  3416.     AH = status
  3417.     BH = current number of bits per primary (06h = standard VGA)
  3418. --------V-104FFF-----------------------------
  3419. INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
  3420.     AX = 4FFFh
  3421.     DL = new state (00h off, 01h on)
  3422. Return: AX = 0000h if successful
  3423. --------U-1050-------------------------------
  3424. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  3425.     AH = 50h
  3426. Return: BX = 1954h if installed
  3427.         AL = 00h if inactive, nonzero if active
  3428. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  3429. SeeAlso: AH=51h
  3430. --------J-105000-----------------------------
  3431. INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
  3432.     AX = 5000h
  3433.     BX = country code
  3434.         0001h USA (English), 0051h Japan
  3435. Return: AL = status
  3436.         00h successful
  3437.         01h bad country code
  3438.         02h other error
  3439. SeeAlso: AX=5001h,INT 16/AX=5000h
  3440. --------J-105001-----------------------------
  3441. INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
  3442.     AX = 5001h
  3443. Return: AL = status
  3444.         00h successful
  3445.         BX = country code
  3446.         02h error
  3447. SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
  3448. --------V-105049-----------------------------
  3449. INT 10 - VIDEO - SCREENR v1.55+ - API
  3450.     AX = 5049h ('PI')
  3451.     BX = function
  3452.         0000h installation check
  3453.         0001h lock mode
  3454.         0002h unlock mode
  3455.         0003h lock palette
  3456.         0004h unlock palette
  3457. Return: AX = 0000h if installed
  3458.         BX = TSR version (BH=major,BL=minor)
  3459.         CL = mode locking status
  3460.         00h mode not locked
  3461.         01h mode locked: INT 10/AH=00h disabled
  3462.         CH = palette locking status
  3463.         00h palette not locked
  3464.         01h palette locked, the following functions are disabled:
  3465.             AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
  3466. Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
  3467.       utility.
  3468. Index:    installation check;SCREENR
  3469. --------U-1051-------------------------------
  3470. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  3471.     AH = 51h
  3472.     AL = state
  3473.         00h disable
  3474.         nonzero enable
  3475. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  3476. SeeAlso: AH=50h"SCROLOCK"
  3477. --------J-105100-----------------------------
  3478. INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
  3479.     AX = 5100h
  3480.     BH = character width in bits (10h)
  3481.     BL = character height (10h)
  3482.     DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
  3483.     ES:BP -> character bitmap
  3484. Return: AL = status (00h successful, 01h failed)
  3485. SeeAlso: AX=5101h,INT 1F
  3486. --------J-105101-----------------------------
  3487. INT 10 - VIDEO - AX PC - READ CHARACTER
  3488.     AX = 5101h
  3489.     BH = character width in bits
  3490.     BL = character height
  3491.     DX = character code (DH = 00h if 8-bit character)
  3492.     ES:BP -> buffer for character bitmap
  3493. Return: AL = status (00h successful, 01h failed)
  3494. SeeAlso: AH=09h,AX=5100h
  3495. --------J-105200-----------------------------
  3496. INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
  3497.     AX = 5200h
  3498.     BX = segment of buffer
  3499. SeeAlso: AX=5201h
  3500. --------J-105201-----------------------------
  3501. INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
  3502.     AX = 5201h
  3503. Return: BX = segment of buffer or 0000h if failed
  3504. SeeAlso: AX=8300h,AH=FEh
  3505. ----------1053-------------------------------
  3506. INT 10 - Show Partner F/X v3.6 - START PRESENTATION
  3507.     AH = 53h
  3508.     DS:DX -> ASCIZ name of presentation file (no path, extension forced to
  3509.         .PR2)
  3510. Return: ???
  3511. SeeAlso: AH=55h
  3512. ----------1055-------------------------------
  3513. INT 10 - Show Partner F/X v3.6 - UNINSTALL
  3514.     AH = 55h
  3515. Return: FXSHOW.EXE removed from memory
  3516. SeeAlso: AH=53h
  3517. --------V-105555-----------------------------
  3518. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  3519.     AX = 5555h
  3520. Return: AX = AAAAh    if installed
  3521.     BX:CX -> ??? routine in SMS.COM resident portion
  3522.           -> data area in VCONFIG
  3523. Program: Super Switch (SMS.COM) is a video mode switch program supplied with
  3524.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  3525. SeeAlso: INT 10/AH=00h,INT 2F/AX=6400h
  3526. Index:    screen saver;ATI Wonder SMS.COM
  3527.  
  3528. Format of data area:
  3529. Offset    Size    Description
  3530.  00h    DWORD    original INT 09 vector
  3531.  04h    DWORD    original INT 10 vector
  3532.  08h    DWORD    original INT 1C vector
  3533.  0Ch    WORD    screen saver state, 0=off, 1=on
  3534.  0Eh    WORD    blanking interval in clock ticks
  3535. --------V-105F00-----------------------------
  3536. INT 10 - Chips & Technologies Extended BIOS - RETURN CHIP INFORMATION
  3537.     AX = 5F00h
  3538. Return: AL = 5Fh function supported
  3539.         BL = chip type (see below)
  3540.         BH = video memory size (00h 256KB, 01h 512KB, 02h 1MB)
  3541.         CX = miscellaneous flags
  3542.         bits 15-2 reserved
  3543.         bit 1 = system type (0=PC/AT, 1=PS/2)
  3544.         bit 2 = DAC size (0=6-bit, 1=8-bit)
  3545. SeeAlso: AX=5F01h
  3546.  
  3547. Bitfields for chip type:
  3548.  bits 7-4 chip type
  3549.     0000: 82c451
  3550.     0001: 82c452
  3551.     0010: 82c455
  3552.  bits 3-0 revision number
  3553. --------V-105F00-----------------------------
  3554. INT 10 - VIDEO - Realtek RTVGA - RETURN CHIP VERSION
  3555.     AX = 5F00h
  3556. Return: AH = 00h, if successful
  3557.     AL = chip version (the same value that VTEST.EXE reads)
  3558.         00h RTG3103???
  3559.         01h RTG31030/RTG3105
  3560.         02h RTG3106???
  3561.         3Fh non-Realtek chip
  3562. BUG:    in v3.C10, AX=5F00h on return due to improper stack restoration code
  3563. SeeAlso: AX=5F01h"RTVGA"
  3564. --------V-105F01-----------------------------
  3565. INT 10 - Chips & Technologies Extended BIOS - SET EMULATION
  3566.     AX = 5F01h
  3567.     BL = emulation type (see below)
  3568. Return: AL = 5Fh if function supported
  3569.         AH = status
  3570.         00h unsuccessful
  3571.         01h successful
  3572. SeeAlso: AX=5F00h,AX=5F02h,AH=FFh"Oak"
  3573.  
  3574. Values for emulation type:
  3575.  00h,01h reserved
  3576.  02h    CGA
  3577.  03h    MDA
  3578.  04h    Hercules
  3579.  05h    EGA
  3580.  06h    VGA
  3581. --------V-105F01-----------------------------
  3582. INT 10 - VIDEO - Realtek RTVGA - WRITE RTVGA BIOS STRING TO DESTINATION
  3583.     AX = 5F01h
  3584.     ES:DI -> zero-filled buffer for BIOS ID string
  3585. Return: AH = 00h if succesful
  3586.     ES:DI -> ASCII signature "REALTEK VGA BIOS Version 3C.10"
  3587. BUG:    in v3.C10, AX=5F01h on return due to improper stack restoration code
  3588. SeeAlso: AX=5F00h"RTVGA",AX=5F02h"RTVGA"
  3589. --------V-105F02-----------------------------
  3590. INT 10 - Chips & Technologies Extended BIOS - AUTO EMULATION
  3591.     AX = 5F02h
  3592.     BL = new state of autmatic emulation (00h enabled, 01h disabled)
  3593. Return: AL = 5Fh if function supported
  3594.         AH = status
  3595.         00h unsuccessful
  3596.         01h successful
  3597. SeeAlso: AX=5F01h,AX=5F03h
  3598. --------V-105F02-----------------------------
  3599. INT 10 - VIDEO - Realtek RTVGA - RETURN RTVGA ON-BOARD MEMORY SIZE
  3600.     AX = 5F02h
  3601. Return: AH = 00h, if succesful
  3602.     AL = on-board memory size
  3603.          (00h = 256K, 01h = 512K, 02h = 768K, 03h = 1024K)
  3604. BUG:    in v3.C10, AX=5F02h on return due to improper stack restoration code
  3605. SeeAlso: AX=5F01h"RTVGA",AX=5F03h"RTVGA"
  3606. --------V-105F03-----------------------------
  3607. INT 10 - VIDEO - Realtek RTVGA - SET ???
  3608.     AX = 5F03h
  3609.     BL = 0-3 (???)
  3610. Return: AH = 00h if succesful
  3611. BUG:    in v3.C10, AX=5F03h on return due to improper stack restoration code
  3612. SeeAlso: AX=5F02h"RTVGA"
  3613. --------V-105F03BL00-------------------------
  3614. INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON DISPLAY MODE
  3615.     AX = 5F03h
  3616.     BL = 00h
  3617.     CL = display mode
  3618.     CH = mode
  3619.         bits 1-0 scanlines
  3620.         00: 200
  3621.         01: 350
  3622.         10: 400
  3623.         bit 7 persistence (0 reset on next boot, 1 until changed)
  3624. Return: AL = 5Fh if function supported
  3625.         AH = status
  3626.         00h unsuccessful
  3627.         01h successful
  3628. SeeAlso: AX=5F02h,AX=5F03h/BL=01h,AX=5F90h
  3629. --------V-105F03BL01-------------------------
  3630. INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON EMULATION MODE
  3631.     AX = 5F03h
  3632.     BL = 01h
  3633.     CL = emulation mode
  3634.     CH = mode
  3635.         bit 7 persistence (0 reset on next boot, 1 until changed)
  3636. Return: AL = 5Fh if function supported
  3637.         AH = status
  3638.         00h unsuccessful
  3639.         01h successful
  3640. SeeAlso: AX=5F02h,AX=5F03h/BL=00h,AX=5F90h
  3641. --------V-105F-------------------------------
  3642. INT 10 - Chips & Technologies Extended BIOS - SAVE/RESTORE SUPERVGA STATE
  3643.     AH = 5Fh
  3644.     AL = subfunction
  3645.         90h determine size of save buffer
  3646.         91h save state
  3647.         92h restore state
  3648.     CX = state mask (see below)
  3649.     ES:BX -> save buffer (subfunctions 91h,92h only)
  3650. Return: AL = 5Fh if function supported
  3651.         ---subfunction 90h---
  3652.         BX = number of 64-byte blocks required
  3653.         ---subfunction 92h---
  3654.         buffer at ES:BX filled
  3655. SeeAlso: AH=1Ch,AX=5F03h
  3656.  
  3657. Bitfields for state mask:
  3658.  bit 0    video hardware
  3659.  bit 1    BIOS data state
  3660.  bit 2    DAC state
  3661.  bit 15 type (0 all state info, 1 SuperVGA state only)
  3662. --------V-106A00BX0000-----------------------
  3663. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  3664.     AX = 6A00h
  3665.     BX = 0000h
  3666.     CX = 0000h
  3667.     DX = buffer length (may be 0)
  3668.     ES:DI -> buffer
  3669. Return: BX = number of bytes stored in buffer
  3670.     CX = bytes required for all descriptions (0 if no DGIS)
  3671. Note:    buffer contains descriptions and addresses of DGIS-compatible
  3672.       display(s) and printer(s)
  3673. SeeAlso: AX=6A02h
  3674. --------V-106A01CX0000-----------------------
  3675. INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT
  3676.     AX = 6A01h
  3677.     CX = 0000h
  3678.     ES:DI = address of device to send INT 10 output to
  3679. Return: CX = 0000h  output could not be redirected
  3680.          else INT 10h output now routed to requested display
  3681. SeeAlso: AX=6A02h
  3682. --------V-106A02-----------------------------
  3683. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  3684.     AX = 6A02h
  3685.     ES:DI = 0000h:0000h
  3686. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  3687.         else address of the current DGIS INT 10 display
  3688. SeeAlso: AX=6A00h,AX=6A01h
  3689. --------V-106E00-----------------------------
  3690. INT 10 - Paradise VGA internal - GET ???
  3691.     AX = 6E00h
  3692. Return: AH = ??? (depends on serial number)
  3693.     AL = ???
  3694.     BX = ???
  3695.     CL = ???
  3696.     CH = ???
  3697.     DX = ???
  3698. SeeAlso: AX=6E04h,AX=6E05h
  3699. --------V-106E04-----------------------------
  3700. INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
  3701.     AX = 6E04h
  3702. Return: BX = screen width (columns)
  3703.     CX = screen height (lines)
  3704.     AH = ??? (05h or FFh)
  3705.     AL = ??? (04h or video mode)
  3706. SeeAlso: AX=6E00h,AX=6E05h
  3707. --------V-106E05-----------------------------
  3708. INT 10 - Paradise VGA internal - SET MODE
  3709.     AX = 6E05h
  3710.     BL = mode
  3711. Note:    like AH=00h, AL=BL.
  3712. SeeAlso: AH=00h,AX=6E00h,AX=6E04h,AX=6F05h
  3713. --------V-106F00BX0000-----------------------
  3714. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - INSTALLATION CHECK
  3715.     AX = 6F00h
  3716.     BX = 0000h
  3717. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  3718.     BX = 4850h ('HP') indicates HP Extended BIOS video functions present
  3719. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
  3720. --------V-106F01-----------------------------
  3721. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - GET MONITOR INFO
  3722.     AX = 6F01h
  3723. Return: AL = monitor type code (HP,VEGA VGA only) (see below)
  3724.     AH = status register information
  3725.          bit  0 = display enable
  3726.             0 = display enabled
  3727.             1 = vertical or horizontal retrace in progress
  3728.          bit  1 = light pen flip flop set
  3729.          bit  2 = light pen switch activated
  3730.          bit  3 = vertical sync
  3731.          bit  4 = monitor resolution
  3732.             0 = high resolution (>200 lines)
  3733.             1 = low resolution (<=200 lines)
  3734.          bit  5 = display type
  3735.             0 = color
  3736.             1 = monochrome
  3737.          bits6,7= diagnostic bits
  3738.     CL = current value of Extended Control register (HP Ext BIOS, and only
  3739.         if AL=41h)
  3740. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  3741.  
  3742. Values for monitor type code (HP Extended BIOS):
  3743.  00h    non-HP card with ROM and possibly its own INT 10h driver
  3744.  41h    MultiMode video display adapter
  3745.  42h-44h reserved
  3746.  45h    industry standard monochrome display adapter
  3747.  46h    industry standard color display adapter
  3748.  51h    reserved
  3749. --------V-106F02-----------------------------
  3750. INT 10 - VIDEO - HP Vectra EXTENDED BIOS - SET MONITOR INFO
  3751.     AX = 6F02h
  3752.     BL = new value for extended control register (see below)
  3753. Return: nothing
  3754. Notes:    this function is only valid when an HP MultiMode Video Display Adapter
  3755.       is installed
  3756.     the Extended Control register is at I/O address 3DDh
  3757. SeeAlso: AX=6F01h,AX=6F03h
  3758.  
  3759. Bitfields for extended control register:
  3760.  bit 0    screen resolution (0 = 200 lines, 1 = 400 lines)
  3761.  bit 1    underline enable (if set, 'blue' bit of fg color = underl)
  3762.  bit 2    font (0 = Standard-8, 1 = HP-Roman-8)
  3763.  bit 3    memory disabled for CPU access
  3764.  bit 4    allow access to full 32K memory instead of wrapping at 16K
  3765.  bit 5    select second 16K page instead of first
  3766.  bits 6,7 unused
  3767. --------V-106F03-----------------------------
  3768. INT 10 - VIDEO - HP Vectra EXTENDED BIOS - MODIFY MONITOR INFO
  3769.     AX = 6F03h
  3770.     BH = exclude mask (set bits are not modified)
  3771.     BL = new values for bits indicated by BH (see AX=6F02h)
  3772. Return: nothing
  3773. Note:    this function is only valid when an HP MultiMode Video Display Adapter
  3774.       is installed
  3775. SeeAlso: AX=6F01h,AX=6F02h
  3776. --------V-106F04-----------------------------
  3777. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
  3778.     AX = 6F04h
  3779. Return: AL = current video mode (see AX=6F05h)
  3780.     BX = horizontal columns (text) or pixels (graphics)
  3781.     CX = vertical columns (text) or pixels (graphics)
  3782. SeeAlso: AX=6F05h
  3783. --------V-106F05-----------------------------
  3784. INT 10 - VIDEO - Video7 VGA, VEGA EXTENDED EGA/VGA - SET VIDEO MODE
  3785.     AX = 6F05h
  3786.     BL = mode (see below)
  3787. Notes:    also supported by the HP Vectra Extended BIOS
  3788.     on the HP Vectra, this function rather than AH=00h must be used to
  3789.       return to an IBM-standard mode after setting an HP-specified mode
  3790.       from 08h to 0Fh.
  3791. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  3792.  
  3793. Values for video mode:
  3794.       text/ text pixel     pixel    colors    disp    scrn  system
  3795.       grph resol  box    resoltn        page    addr
  3796.  00h-13h = standard IBM modes (see AH=00h)
  3797.  08h = T   80x27           mono             HP MultiMode Video
  3798.  09h = T   80x27                     HP MultiMode Video
  3799.  0Ah = T   40x27           mono             HP MultiMode Video
  3800.  0Bh = T   40x27                     HP MultiMode Video
  3801.  0Ch = Reserved                         HP MultiMode Video
  3802.  0Dh = G        640x400                 HP MultiMode Video
  3803.  0Eh = G        320x400                 HP MultiMode Video
  3804.  0Fh = G        320x400                 HP MultiMode Video
  3805.  40h = T   80x43  8x8                     Video7/VEGA VGA
  3806.  41h = T  132x25  8x14                     Video7/VEGA VGA
  3807.  42h = T  132x43  8x8                     Video7/VEGA VGA
  3808.  43h = T   80x60  8x8                     Video7/VEGA VGA
  3809.  44h = T  100x60  8x8                     Video7/VEGA VGA
  3810.  45h = T  132x28  8x8                     Video7/VEGA VGA
  3811.  60h = G        752x410      16             Video7 VGA, VEGA VGA
  3812.  61h = G        720x540      16             Video7 VGA, VEGA VGA
  3813.      = G        720x540      16             Northgate, Headland 1024i
  3814.  62h = G        800x600      16             Video7 VGA, VEGA Ext EGA
  3815.      = G        800x600      16             Headland 1024i
  3816.  63h = G           1024x768       2             Video7 VGA
  3817.  64h = G           1024x768       4             Video7 VGA
  3818.  65h = G           1024x768      16             Video7 VGA, VEGA Ext EGA
  3819.      = G           1024x768      16             Headland 1024i
  3820.  66h = G        640x400     256             Video7 VGA, VEGA Ext VGA
  3821.      = G        640x400     256             Northgate, Headland 1024i
  3822.  67h = G        640x480     256             Video7 VGA, VEGA Ext VGA
  3823.      = G        640x480     256             Headland 1024i
  3824.  68h = G        720x540     256             Video7 VGA, VEGA Ext VGA
  3825.      = G        720x540     256             Headland 1024i
  3826.  69h = G        800x600     256             Video7 VGA, VEGA Ext VGA
  3827.      = G        800x600     256             Headland 1024i
  3828.  70h = G        752x410      16gray         Video7 VGA, VEGA VGA
  3829.  71h = G        720x540      16gray         Video7 VGA, VEGA VGA
  3830.  72h = G        800x600      16gray         Video7 VGA
  3831.  73h = G           1024x768       2gray         Video7 VGA
  3832.  74h = G           1024x768       4gray         Video7 VGA
  3833.  75h = G           1024x768      16gray         Video7 VGA
  3834.  76h = G        640x400     256gray         Video7 VGA
  3835.  77h = G        640x480     256gray         Video7 VGA
  3836.  78h = G        720x540     256gray         Video7 VGA
  3837.  79h = G        800x600     256gray         (future)
  3838. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  3839. Index:    video modes
  3840. --------V-106F06-----------------------------
  3841. INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
  3842.     AX = 6F06h
  3843.     BL = Autoswitch mode select
  3844.          00h select EGA/VGA-only modes
  3845.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  3846.          02h select 'bootup' CGA/MGA modes
  3847.     BH = enable/disable (00h enable, 01h = disable selection)
  3848. --------V-106F07-----------------------------
  3849. INT 10 - VIDEO -  Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
  3850.     AX = 6F07h
  3851. Return: AL = 6Fh
  3852.     AH = bits 0-6 = number of 256K blocks of video memory
  3853.          bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  3854.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  3855.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  3856.     CX = 0000h
  3857. SeeAlso: AH=12h/BL=10h
  3858. --------V-1070-------------------------------
  3859. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
  3860.     AH = 70h
  3861. Return: AX:BX -> WORD containing green plane's offset
  3862.     AX:CX -> WORD containing green plane's segment
  3863.     AX:DX -> WORD containing segment of red (offset 0) and blue (offset
  3864.             4000) planes
  3865. SeeAlso: AH=71h
  3866. --------V-107000BX0000-----------------------
  3867. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  3868.     AX = 7000h
  3869.     BX = 0000h
  3870. Return: AL = 70h if Trident-based Everex card
  3871.     CL = monitor type (see below)
  3872.     CH = feature bits (see below)
  3873.     DX = video board info
  3874.         bits 4-15: board ID model
  3875.         bits 0-3:  board ID revision
  3876.     DI = BCD BIOS version number
  3877. Note:    board models for Trident-based Everex cards:
  3878.         236h Ultragraphics II
  3879.         620h Vision VGA
  3880.         673h EVGA
  3881.         678h Viewpoint
  3882. SeeAlso: AX=5F01h,AH=FF"Oak"
  3883.  
  3884. Values for monitor type:
  3885.  00h    mono
  3886.  01h    CGA
  3887.  02h    EGA
  3888.  03h    digital multifrequency
  3889.  04h    IBM PS/2
  3890.  05h    IBM 8514
  3891.  06h    SuperVGA
  3892.  07h    analog multifrequency
  3893.  08h    super multifrequency
  3894.  
  3895. Bitfields for feature bits:
  3896.  bits 7,6  memory size
  3897.     00 = 256K
  3898.     01 = 512K
  3899.     10 = 1024K
  3900.     11 = 2048K
  3901.  bit 5    special oscillator present
  3902.  bit 4    VGA protect enabled
  3903.  bit 0    6845 emulation
  3904. --------V-107000BX0004-----------------------
  3905. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  3906.     AX = 7000h
  3907.     BX = 0004h
  3908. Return: ES:DI -> FAR paging function (call with DL = page to set)
  3909. Note:    the word preceding ES:DI is the length of the function in bytes, and
  3910.       the last byte of the function is a FAR return instruction.
  3911. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  3912. --------V-107000BX0005-----------------------
  3913. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  3914.     AX = 7000h
  3915.     BX = 0005h
  3916.     CL = maximum number of modes to get info for
  3917.     CH = mode type to get info for (see below)
  3918.     DL = monitor type to get info for
  3919.     ES:DI -> buffer for mode info (see below)
  3920. Return: CL = total number of modes fitting criteria
  3921.     CH = size of each info record
  3922. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  3923.  
  3924. Values for mode type:
  3925.  00h    all modes
  3926.  01h    monochrome text modes
  3927.  02h    color text modes
  3928.  03h    four-color CGA graphics modes
  3929.  04h    two-color CGA graphics modes
  3930.  05h    16-color graphics modes
  3931.  06h    256-color graphics modes
  3932.  
  3933. Format of mode information record:
  3934. Offset    Size    Description
  3935.  00h    BYTE    mode number (bit 7 set if extended mode)
  3936.  01h    BYTE    mode type (see above)
  3937.  02h    BYTE    info bits
  3938.         bits 7,6 reserved
  3939.              5     monochrome mode
  3940.              4     interlaced display
  3941.              3     requires special oscillator
  3942.              2,1 memory required
  3943.              00 = 256K
  3944.              01 = 512K
  3945.              10 = 1024K
  3946.              11 = 2048K
  3947.              0     reserved
  3948.  03h    BYTE    font height
  3949.  04h    BYTE    text columns on screen
  3950.  05h    BYTE    text rows on screen
  3951.  06h    WORD    number of scan lines
  3952.  08h    BYTE    color information
  3953.         bits 7-4 reserved
  3954.              3-0 bits per pixel
  3955. --------V-1071-------------------------------
  3956. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
  3957.     AH = 71h
  3958. Return: AX:BX -> WORD containing segment address of INCRAM
  3959.     AX:CX -> WORD containing offset of INCRAM
  3960. SeeAlso: AH=70h
  3961. --------V-1072-------------------------------
  3962. INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
  3963.     AH = 72h
  3964.     AL = number of columns to shift scroll area, 00h to clear entire area
  3965.     BH = new attributes for blanked columns at left
  3966.     CH,CL = row, column of upper left corner of scroll area
  3967.     DH,DL = row, column of lower right corner of scroll area
  3968. SeeAlso: AH=06h,AH=07h,AH=73h,INT 15/AH=12h/BH=05h
  3969. --------V-1073-------------------------------
  3970. INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
  3971.     AH = 73h
  3972.     AL = number of columns to shift scroll area, 00h to clear entire area
  3973.     BH = new attributes for blanked columns at right
  3974.     CH,CL = row, column of upper left corner of scroll area
  3975.     DH,DL = row, column of lower right corner of scroll area
  3976. SeeAlso: AH=06h,AH=07h,AH=72h,INT 15/AH=12h/BH=05h
  3977. --------V-107F00-----------------------------
  3978. INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
  3979.     AX = 7F00h
  3980. Return: AL <> 7Fh if not supported
  3981.     AL = 7Fh if supported
  3982.         AH = status
  3983.         00h successful
  3984.             ES:DI -> info structure (see below)
  3985.         01h failed
  3986. Program: the SOLLEX (Smos videO controLLer EXtensions) SuperVGA functions are
  3987.       an extension to the VESA SuperVGA BIOS Extensions (see AX=4F00h) by
  3988.       Seiko Epson Corporation intended to provided a standardized interface
  3989.       to SuperVGA functionality not addressed by the VESA standard
  3990. SeeAlso: AX=4F00h
  3991.  
  3992. Format of info structure:
  3993. Offset    Size    Description
  3994.  00h    DWORD    pointer to VESA function dispatch table
  3995.  04h    DWORD    pointer to SOLLEX function dispatch table
  3996.  08h    DWORD    pointer to VESA SuperVGA info (see AX=4F00h)
  3997.  0Ch    DWORD    pointer to mode info structure table, consisting of
  3998.         alternating ResInfo (see below) and VESA mode information
  3999.         (see AX=4F01h) blocks, terminated with an FFFFh word
  4000.  10h    DWORD    pointer to font info structure table (see below)
  4001.  14h    WORD    high resolution crystal frequency in Hz (0000h = not present)
  4002.  16h    DWORD    pointer to ASCIZ ID string
  4003.  1Ah    DWORD    pointer to timeout reset table
  4004.         array of bytes, each a multiple of the minimum time increment
  4005.  1Eh    WORD    minimum time increment in timer ticks
  4006.  20h    BYTE    inverse options supported
  4007.         bit 0: inverse supported
  4008.         bits 1-7: reserved
  4009.  21h    BYTE    normal color value
  4010.  22h    BYTE    inverse color value
  4011.  23h    WORD    port to be accessed for normal/inverse settings
  4012.  25h    WORD    type of interface chip (currently undefined)
  4013.  27h    WORD    program operational mode
  4014.         bits 1-0: 00 no preference
  4015.               01 terse (minimum detail in program messages)
  4016.               10 verbose
  4017.               11 use menus if supported, verbose mode otherwise
  4018.         bits 7-2: reserved
  4019.  29h    WORD    SOLLEX specification version
  4020.  2Bh    WORD    version of VESA/SOLLEX implementation
  4021.  2Dh    DWORD    offset to relocatable portion of SOLLEX extensions (for CONFIG)
  4022.  2Eh    DWORD    offset to unused section of the extensions ROM
  4023.  31h 16 BYTEs    reserved
  4024. Note:    all DWORD pointers initially require segment fixups; if the segment
  4025.       is 0000h, it should be changed to the returned ES, otherwise it
  4026.       may be assumed to be correct
  4027.  
  4028. Format of ResInfo:
  4029. Offset    Size    Description
  4030.  00h    WORD    16-bit mode number
  4031.  02h    WORD    adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
  4032.  04h    WORD    display info (see AX=7F01h/BL=01h)
  4033.  06h    DWORD    pointer to video parameter table
  4034.  0Ah    BYTE    replacement entry in master Video Parameter
  4035.  0Bh    BYTE    mode requested for mode set by BIOS
  4036.  0Ch    DWORD    pointer to LoadReg table
  4037.  10h    BYTE    index into table of clock values (see below)
  4038.  
  4039. Format of font info table [array] entry:
  4040. Offset    Size    Description
  4041.  00h    BYTE    required font height
  4042.  01h    BYTE    parameter to load text mode font
  4043.  02h    BYTE    parameter to load graphics mode font
  4044.  
  4045. Values for clock value index:
  4046.  00h    25 MHz
  4047.  01h    28 MHz
  4048.  02h    PCLK
  4049.  03h    31.5 MHz (VESA 640x480)
  4050.  04h    reserved
  4051.  05h    16 MHz (EGA)
  4052.  06h    PCLK
  4053.  07h    24 MHz (EGA)
  4054.  08h    25 MHz
  4055.  09h    28 MHz
  4056.  0Ah    36 MHz
  4057.  0Bh    45 MHz (for 1024x768)
  4058.  0Ch    80 MHz
  4059.  0Dh    40 MHz
  4060.  0Eh    65 MHz
  4061.  0Fh     1 MHz (for powerdown)
  4062. --------V-107F01BL00-------------------------
  4063. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
  4064.     AX = 7F01h
  4065.     BL = 00h
  4066.     CX = adapter request
  4067.         bits 1-0: adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
  4068.         bit 2:    reserved
  4069.         bits 4-3: change displays (00 none, 01 analog 10 digital 11 panel)
  4070.         bits 6-5: desired monitor sense (01 color, 10 mono, 11=8514)
  4071.         bit 7:    lock override
  4072.         bit 8:    alternate adapter mode
  4073.         bits 15-9: reserved
  4074. Return: AL = 7Fh if supported
  4075.         AH = status
  4076.         00h successful
  4077.         01h failed
  4078.     AL <> 7Fh if not supported
  4079. Note:    initializes video hardware to a particular standard
  4080. SeeAlso: AX=7F00h,AX=7F01h/BL=01h,AX=7F01h/BL=02h
  4081. --------V-107F01BL01-------------------------
  4082. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
  4083.     AX = 7F01h
  4084.     BL = 01h
  4085. Return: AL <> 7Fh if not supported
  4086.     AL = 7Fh if supported
  4087.         AH = status
  4088.         00h successful
  4089.         01h failed
  4090.         BX = adapter type (see AX=7F01h/BL=00h)
  4091.         DX = display type (see below)
  4092. SeeAlso: AX=7F00h,AX=7F01h/BL=00h,AX=7F01h/BL=02h
  4093.  
  4094. Bitfields for display type:
  4095.  bits 1-0 monitor sense (00 none, 01 color, 10 mono, 11=8514)
  4096.  bit 2    multi-frequency analog monitor active
  4097.  bit 3    LCD panel active
  4098.  bit 4    plasma/electroluminescent panel active
  4099.  bit 5    PS/2-type monitor active
  4100.  bit 6    multi-frequency digital monitor active
  4101.  bit 7    Enhanced Color Display monitor active
  4102.  bit 8    alternate display active
  4103.  bits 15-9 reserved
  4104. --------V-107F01BL02-------------------------
  4105. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
  4106.     AX = 7F01h
  4107.     BL = 02h
  4108.     CX = adapter request (see AX=7F01h/BL=00h)
  4109. Return: AL <> 7Fh if not supported
  4110.     AL = 7Fh if supported
  4111.         AH = status
  4112.         00h requested setting can successfully be made
  4113.         01h requested setting not available in this configuration
  4114. SeeAlso: AX=7F00h,AX=7F01h/BL=00h
  4115. --------V-107F02BL00-------------------------
  4116. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
  4117.     AX = 7F02h
  4118.     BL = 00h
  4119.     CX = display output setting (see below)
  4120. Return: AL <> 7Fh if not supported
  4121.     AL = 7Fh if supported
  4122.         AH = status
  4123.         00h successful
  4124.         01h failed
  4125. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  4126.  
  4127. Bitfields for display output setting:
  4128.  bit 0    CRTC control in bits 2,1 valid
  4129.  bit 1    enable digital output
  4130.  bit 2    enable analog output
  4131.  bit 3    panel control in bits 5,4 valid
  4132.  bit 4    enable LCD output
  4133.  bit 5    enable plasma/EL output
  4134.  bit 6    inverse control in bit 7 valid
  4135.  bit 7    0=normal, 1=inverse
  4136.  bits 15-8 reserved
  4137. --------V-107F02BL01-------------------------
  4138. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
  4139.     AX = 7F02h
  4140.     BL = 01h
  4141. Return: AL <> 7Fh if not supported
  4142.     AL = 7Fh if supported
  4143.         AH = status
  4144.         00h successful
  4145.             BX = display output setting (see AX=7F02h/BL=00h)
  4146.             CX = displays attached (see below)
  4147.         01h failed
  4148. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  4149.  
  4150. Bitfields for displays attached:
  4151.  bit 0    PS/2 display on analog output
  4152.  bit 1    multi-frequency monitor on analog output
  4153.  bit 2    LCD panel attached
  4154.  bit 3    plasma/electroluminescent panel attached
  4155.  bit 4    multi-frequency monitor on digital output
  4156.  bit 5    Enhanced Color Display attached to digital outpt
  4157.  bit 6    alternate display
  4158.  bits 15-7 reserved
  4159. --------V-107F03BL00-------------------------
  4160. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
  4161.     AX = 7F03h
  4162.     BL = 00h
  4163.     CX = support type
  4164.         0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
  4165.         0005h-0012h reserved for SOLLEX, 0013h Hercules,
  4166.         0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
  4167. Return: AL <> 7Fh if not supported
  4168.     AL = 7Fh if supported
  4169.         AH = status
  4170.         00h successful
  4171.             CX = size of video support code
  4172.             DX = segment of physical video support (0000h if no ROM)
  4173.             ES = segment of active video support
  4174.             ES:DI -> information block (DI = 0000h if none available)
  4175.         01h failed
  4176. SeeAlso: AX=7F03h/BL=01h
  4177. --------V-107F03BL01-------------------------
  4178. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
  4179.     AX = 7F03h
  4180.     BL = 01h
  4181.     CX = support request
  4182.     ES = segment of support code
  4183. Return: AL <> 7Fh if not supported
  4184.     AL = 7Fh if supported
  4185.         AH = status
  4186.         00h successful
  4187.         01h failed
  4188. Note:    initializes the indicated video support by calling ES:0003h; this
  4189.       function may be used to switch the active video support back to
  4190.       ROM after AX=7F03h/BL=02h
  4191. SeeAlso: AX=7F03h/BL=00h
  4192. --------V-107F03BL02-------------------------
  4193. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
  4194.     AX = 7F03h
  4195.     BL = 02h
  4196.     CX = support request
  4197.     ES = destination segment
  4198. Return: AL <> 7Fh if not supported
  4199.     AL = 7Fh if supported
  4200.         AH = status
  4201.         00h successful
  4202.         01h failed
  4203. SeeAlso: AX=7F00h,AX=7F03h/BL=01h
  4204. --------V-107F04BL00-------------------------
  4205. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
  4206.     AX = 7F04h
  4207.     BL = 00h
  4208.     CX = new power state
  4209. Return: AL <> 7Fh if not supported
  4210.     AL = 7Fh if supported
  4211.         AH = status
  4212.         00h successful
  4213.         01h failed
  4214. Note:    higher values progressively reduce the operations available on the
  4215.       video adapter while yielding increasing power savings
  4216. SeeAlso: AX=7F00h,AX=7F04h/BL=01h
  4217. --------V-107F04BL01-------------------------
  4218. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
  4219.     AX = 7F04h
  4220.     BL = 01h
  4221. Return: AL <> 7Fh if not supported
  4222.     AL = 7Fh if supported
  4223.         AH = status
  4224.         00h successful
  4225.             CX = current power state
  4226.             DX = maximum state
  4227.         01h failed
  4228. SeeAlso: AX=7F00h,AX=7F04h/BL=00h
  4229. --------V-107F04BL02-------------------------
  4230. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
  4231.     AX = 7F04h
  4232.     BL = 02h
  4233.     CX = timeout reset
  4234. Return: AL <> 7Fh if not supported
  4235.     AL = 7Fh if supported
  4236.         AH = status
  4237.         00h successful
  4238.         01h failed
  4239. SeeAlso: AX=7F00h,AX=7F04h/BL=03h
  4240. --------V-107F04BL03-------------------------
  4241. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
  4242.     AX = 7F04h
  4243.     BL = 03h
  4244. Return: AL <> 7Fh if not supported
  4245.     AL = 7Fh if supported
  4246.         AH = status
  4247.         00h successful
  4248.             BX = time increment
  4249.             CX = current timeout reset
  4250.             DX = maximum timeout reset
  4251.             ES:DI -> timeout reset table (array of bytes)
  4252.         01h failed
  4253. Note:    the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
  4254. SeeAlso: AX=7F00h,AX=7F04h/BL=02h
  4255. --------V-107F05-----------------------------
  4256. INT 10 - SOLLEX SuperVGA - LOAD REGISTER
  4257.     AX = 7F05h
  4258.     ES:DI -> register value table (see below)
  4259. Return: AL <> 7Fh if not supported
  4260.     AL = 7Fh if supported
  4261.         AH = status
  4262.         00h successful
  4263.         01h failed
  4264. SeeAlso: AH=F1h,AH=F3h,AH=F5h
  4265.  
  4266. Format of register value table:
  4267. Offset    Size    Description
  4268.  00h    WORD    base I/O register (FFFFh = end of list)
  4269.  02h 2N BYTEs    pairs of values to be written to the base I/O register as an
  4270.         index value and the following register as a data byte
  4271.  2N+2    WORD    FFFFh (end of data list)
  4272.     ... (repeats until FFFFh base address)
  4273. --------V-107F06-----------------------------
  4274. INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
  4275.     AX = 7F06h
  4276.     BL = subfunction
  4277.         00h set multiple font state
  4278.         CX = new state (00h off, 01h on)
  4279.         01h get multiple font state
  4280.         Return: BL = current state (00h off, 01h on)
  4281. Return: AL <> 7Fh if not supported
  4282.     AL = 7Fh if supported
  4283.         AH = status
  4284.         00h successful
  4285.         01h failed
  4286. SeeAlso: AH=11h
  4287. --------V-107F07-----------------------------
  4288. INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
  4289.     AX = 7F07h
  4290.     BL = how much to fill
  4291.        00h regen size
  4292.        01h all video memory
  4293.     CX = pattern to write (normally 0720h for text modes and 0000h for gr)
  4294. Return: AL <> 7Fh if not supported
  4295.     AL = 7Fh if supported
  4296.         AH = status
  4297.         00h successful
  4298.         01h failed
  4299. SeeAlso: AH=06h
  4300. --------A-1080-------------------------------
  4301. INT 10 - CU Writer v1.4 - GET OPTION
  4302.     AH = 80h
  4303.     AL = desired option
  4304. Return: ???
  4305. Program: CU Writer is a public-domain Thai-English word processor from
  4306.       Chulalongkorn University, Bangkok
  4307. SeeAlso: AH=81h"CU Writer"
  4308. --------Q-1080--DX4456-----------------------
  4309. INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
  4310.     AH = 80h
  4311.     DX = 4456h ('DV')
  4312.     ES:DI -> FAR subroutine to be called on ???
  4313. Return: DS = segment of DESQview data structure for video buffer
  4314. Note:    this function is probably meant for internal use only, due to the magic
  4315.       value required in DX
  4316.     the subroutine seems to be called when the DESQview menu is accessed;
  4317.       on entry, AL = 03h or 04h
  4318. --------A-1081-------------------------------
  4319. INT 10 - CU Writer v1.4 - SET OPTION
  4320.     AH = 81h
  4321.     ???
  4322. Return: ???
  4323. SeeAlso: AH=80h"CU Writer"
  4324. --------Q-1081--DX4456-----------------------
  4325. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
  4326.     AH = 81h
  4327.     DX = 4456h ('DV')
  4328. Return: ES = segment of DESQview data structure for video buffer
  4329.         BYTE ES:[0] = current window number in DV 2.0x
  4330. Note:    this function is probably meant for internal use only, due to the magic
  4331.       value required in DX
  4332. SeeAlso: AH=82h"DESQview"
  4333. --------Q-1082--DX4456-----------------------
  4334. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
  4335.     AH = 82h
  4336.     DX = 4456h ('DV')
  4337. Return: DS = segment in DESQview for data structure
  4338.          in DV 2.00,
  4339.           BYTE DS:[0] = window number
  4340.           WORD DS:[1] = segment of other data structure
  4341.           WORD DS:[3] = segment of window's object handle
  4342.     ES = segment of DESQview data structure for video buffer
  4343.     AL = current window number
  4344.     AH = ???
  4345.     BL = direct screen writes
  4346.         00h program does not do direct writes
  4347.         01h program does direct writes, so shadow buffer not usable
  4348.     BH = ???
  4349.     CL = current video mode
  4350.     CH = ???
  4351. Note:    this function is probably meant for internal use only, due to the magic
  4352.       value required in DX
  4353. SeeAlso: AH=81h"DESQview"
  4354. --------J-108200-----------------------------
  4355. INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
  4356.     AX = 8200h
  4357.     BL = new scroll mode or FFh to get current mode
  4358.         00h dynamic, 01h software
  4359. Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
  4360. SeeAlso: AH=06h,AH=07h
  4361. --------J-108300-----------------------------
  4362. INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
  4363.     AX = 8300h
  4364. Return: AX = offset of video RAM
  4365.     ES:BX -> virtual text RAM buffer
  4366. SeeAlso: AX=5201h
  4367. --------N-108B-------------------------------
  4368. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  4369.     AH = 8Bh
  4370. SeeAlso: AH=92h,AH=93h
  4371. --------N-1090-------------------------------
  4372. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  4373.     AH = 90h
  4374. Return: AL = current video mode (see AH=00h)
  4375. SeeAlso: AH=91h
  4376. --------N-1091-------------------------------
  4377. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  4378.     AH = 91h
  4379. Return: AL = video adapter type (see below)
  4380. Note:    types less than 80h do not imply that the current user is on the host
  4381. SeeAlso: AH=90h
  4382.  
  4383. Values for video adapter type:
  4384.  00h    monochrome
  4385.  01h    Hercules monochrome graphics
  4386.  02h    CGA
  4387.  03h    EGA
  4388.  04h    VGA
  4389.  80h    monochrome text terminal
  4390.  81h    Hercules graphics terminal
  4391.  82h    color graphics terminal
  4392. --------N-1092-------------------------------
  4393. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  4394.     AH = 92h
  4395. Note:    the terminal will be updated even when screen updates are inhibited if
  4396.       TTY output is used
  4397. SeeAlso: AH=8Bh
  4398. --------N-1093-------------------------------
  4399. INT 10 - Alloy MW386 - REDRAW SCREEN
  4400.     AH = 93h
  4401. SeeAlso: AH=8Bh,AH=FFh
  4402. --------A-10A0-------------------------------
  4403. INT 10 - CU Writer v1.4 - SET PIXEL WRITE MODE
  4404.     AH = A0h
  4405.     ???
  4406. Return: ???
  4407. Program: CU Writer is a public-domain Thai-English word processor from
  4408.       Chulalongkorn University, Bangkok
  4409. SeeAlso: AH=80h"CU Writer",AH=B0h
  4410. --------A-10B0-------------------------------
  4411. INT 10 - CU Writer v1.4 - PUT PIXEL
  4412.     AH = B0h
  4413.     ???
  4414. Return: ???
  4415. SeeAlso: AH=A0h"CU Writer",AH=B1h,AH=B2h,AH=B3h,AH=B4h,AH=B5h,AH=D0h
  4416. --------A-10B1-------------------------------
  4417. INT 10 - CU Writer v1.4 - MOVE TO
  4418.     AH = B1h
  4419.     ???
  4420. Return: ???
  4421. SeeAlso: AH=B0h,AH=B2h,AH=C0h"CU Writer"
  4422. --------A-10B2-------------------------------
  4423. INT 10 - CU Writer v1.4 - DRAW LINE TO
  4424.     AH = B2h
  4425.     ???
  4426. Return: ???
  4427. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h,AH=B5h
  4428. --------A-10B3-------------------------------
  4429. INT 10 - CU Writer v1.4 - FLOOD FILL
  4430.     AH = B3h
  4431.     ???
  4432. Return: ???
  4433. SeeAlso: AH=B2h,AH=B5h
  4434. --------A-10B4-------------------------------
  4435. INT 10 - CU Writer v1.4 - DRAW RECTANGLE
  4436.     AH = B4h
  4437.     ???
  4438. Return: ???
  4439. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B5h
  4440. --------A-10B5-------------------------------
  4441. INT 10 - CU Writer v1.4 - DRAW FILLED RECTANGLE
  4442.     AH = B5h
  4443.     ???
  4444. Return: ???
  4445. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  4446. --------b-10BF00-----------------------------
  4447. INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
  4448.     AX = BF00h
  4449. Desc:    specify that the external monitor become the active monitor
  4450. Note:    all registers preserved and the internal monitor is blanked
  4451. SeeAlso: AX=BF01h
  4452. --------b-10BF01-----------------------------
  4453. INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
  4454.     AX = BF01h
  4455. Desc:    specify that the internal monitor become the active monitor
  4456. Note:    all registers preserved and the external monitor is blanked
  4457. SeeAlso: AX=BF00h
  4458. --------b-10BF02-----------------------------
  4459. INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
  4460.     AX = BF02h
  4461.     BH = master mode
  4462.         04h CGA
  4463.         05h EGA
  4464.         07h MDA
  4465. SeeAlso: AX=BF03h
  4466. --------b-10BF03BX0000-----------------------
  4467. INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
  4468.     AX = BF03h
  4469.     BX = 0000h
  4470. Return: BH = active monitor
  4471.         00h = external
  4472.         01h = internal
  4473.     BL = master mode
  4474.         00h = switchable VDU not present
  4475.         04h = CGA
  4476.         05h = EGA
  4477.         07h = MDA
  4478.         08h = switchable LCD controller present
  4479.     CH = 00h (reserved)
  4480.     CL = switchable VDU mode supported
  4481.         bit     0   = CGA supported
  4482.         bits 1,2 = reserved (1)
  4483.         bit     3   = MDA supported
  4484.         bits 4-7 = reserved (1)
  4485.     DH = internal monitor type (see below)
  4486.     DL = external monitor type (see below)
  4487. SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
  4488.  
  4489. Values for monitor type:
  4490.  00h    none
  4491.  01h    dual-mode monitor
  4492.  02h    5153 RGB monitor
  4493.  03h    Compaq Color monitor
  4494.  04h    640x400 flat panel
  4495.  05h    VGC monochrome
  4496.  06h    VGC color
  4497.  07h    LCD VGA
  4498. --------b-10BF04-----------------------------
  4499. INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
  4500.     AX = BF04h
  4501.     BH = new state of delay
  4502.         00h enabled
  4503.         01h disabled
  4504. SeeAlso: AX=BF05h
  4505. --------b-10BF05-----------------------------
  4506. INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
  4507.     AX = BF05h
  4508.     BH = new state of video
  4509.         00h off
  4510.         01h on
  4511. SeeAlso: AH=12h/BL=36h,AX=BF04h
  4512. --------b-10BF06-----------------------------
  4513. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  4514.     AX = BF06h
  4515.     CL = address to be read from gray scale table
  4516. Return: AL = bit 3-0 - Value read from gray scale table
  4517.     CL = address to be read from gray scale table
  4518. SeeAlso: AH=12h/BL=33h,AX=BF07h
  4519. --------b-10BF07-----------------------------
  4520. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  4521.     AX = BF07h
  4522.     CH = value to write to gray scale table
  4523.     CL = address to be written to gray scale table
  4524. SeeAlso: AX=BF06h,AX=BF08h
  4525. --------b-10BF08-----------------------------
  4526. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  4527.     AX = BF08h
  4528.     CH = bits 7-4 green weight
  4529.          bits 3-0 blue weight
  4530.     CL = bits 7-4 unused
  4531.          bits 3-0 red weight
  4532. SeeAlso: AH=12h/BH=33h,AX=BF07h
  4533. --------V-10BFA0BXADAD-----------------------
  4534. INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK
  4535.     AX = BFA0h
  4536.     BX = ADADh
  4537. Return: AX = BDBDh if newer ADAPT.COM installed
  4538.         BX = BCD version (BH = major, BL = minor)
  4539.         CL = ???
  4540.         CH = ???
  4541.         DL = ???
  4542.     AX = ADADh if older version of ADAPT.COM installed
  4543. Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an
  4544.       optionally-resident utility for setting display colors and cursor
  4545.       size; when resident, it also includes a screen blanker
  4546. SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h
  4547. Index:    screen saver;ADAPT
  4548. --------V-10BFA1-----------------------------
  4549. INT 10 - VIDEO - Compaq ADAPT.COM - GET ???
  4550.     AX = BFA1h
  4551. Return: AX = BDBEh if supported
  4552.         CH = current value of ???
  4553.         DL = current value of ???
  4554. SeeAlso: AX=BFA0h,AX=BFA2h
  4555. --------V-10BFA2-----------------------------
  4556. INT 10 - VIDEO - Compaq ADAPT.COM - SET ???
  4557.     AX = BFA2h
  4558.     CH = new value for ???
  4559.     DL = new value for ???
  4560. Return: AX = BDBEh if supported
  4561. SeeAlso: AX=BFA0h,AX=BFA1h
  4562. --------A-10C0-------------------------------
  4563. INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN
  4564.     AH = C0h
  4565.     ???
  4566. Return: ???
  4567. SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h
  4568. --------A-10C1-------------------------------
  4569. INT 10 - CU Writer v1.4 - OUTPUT TEXT
  4570.     AH = C1h
  4571.     ???
  4572. Return: ???
  4573. SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h
  4574. --------A-10C2-------------------------------
  4575. INT 10 - CU Writer v1.4 - REVERSE TEXT
  4576.     AH = C2h
  4577.     ???
  4578. Return: ???
  4579. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h
  4580. --------A-10C3-------------------------------
  4581. INT 10 - CU Writer v1.4 - TEXT BAR
  4582.     AH = C3h
  4583.     ???
  4584. Return: ???
  4585. SeeAlso: AH=C0h,AH=C1h,AH=C4h
  4586. --------A-10C4-------------------------------
  4587. INT 10 - CU Writer v1.4 - TEXT MENU
  4588.     AH = C4h
  4589.     ???
  4590. Return: ???
  4591. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h
  4592. --------V-10CC00SI0000-----------------------
  4593. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  4594.     AX = CC00h
  4595.     SI = 0000h (if checking version)
  4596. Return: CX = ABCDh
  4597.     AL = Ultravision extensions
  4598.         00h enabled
  4599.         FFh disabled
  4600.     AH = card designator
  4601.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  4602.     DX = support for high resolution modes
  4603.         00h not active
  4604.         01h active
  4605.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  4606.        = unchanged for versions <1.2
  4607. SeeAlso: AX=CC01h,AX=CC02h
  4608. --------V-10CC01-----------------------------
  4609. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  4610.     AX = CC01h
  4611. Notes:    subsequent BIOS calls will be passed through to previous handler
  4612.     should be followed immediately by mode set to restore normal EGA/VGA
  4613.       state
  4614. SeeAlso: AX=CC02h
  4615. --------V-10CC02-----------------------------
  4616. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  4617.     AX = CC02h
  4618. Note:    should be followed immediately by mode set to restore previous
  4619.       UltraVision state
  4620. SeeAlso: AX=CC01h
  4621. --------V-10CD00-----------------------------
  4622. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  4623.     AX = CD00h
  4624.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  4625.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  4626. Notes:    if palette locking is in effect for the current mode, the new colors
  4627.       will be displayed immediately; otherwise, the system reverts to the
  4628.       default palette
  4629.     palette table 0 is reserved for the default palette and cannot be set
  4630.     UltraVision always sets the border color to black
  4631. SeeAlso: AX=CD01h,AX=CD02h
  4632. --------V-10CD01-----------------------------
  4633. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  4634.     AX = CD01h
  4635.     CL = palette locking value
  4636.         00h none
  4637.         01h text modes only (02h,03h)
  4638.         FFh all modes (all standard color text and graphics modes)
  4639. Notes:    intended for video modes with 16 or fewer colors
  4640. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  4641. --------V-10CD02-----------------------------
  4642. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  4643.     AX = CD02h
  4644. Return: CL = palette table number
  4645.     DS:DX -> 17-byte palette register list
  4646.     DS:SI -> current font names table (see below)
  4647. Note:    only the font names are valid on monochrome EGA systems
  4648. SeeAlso: AX=1009h,AX=CD00h
  4649.  
  4650. Format of palette register list:
  4651. Offset    Size    Description
  4652.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  4653.  10h    BYTE    border color
  4654.  
  4655. Format of current font names table (v2+):
  4656. Offset    Size    standard EGA    HiRes EGA    VGA
  4657.  00h  8 BYTEs    N/A        F19 font    F20 font
  4658.  08h  8 BYTEs    F14 font    F14 font    F14 font
  4659.  10h  8 BYTEs    N/A        F11 font    F10 font
  4660.  18h  8 BYTEs    F8 font        F8 font        F8 font
  4661.  
  4662. Format of current font names table (v1.x):
  4663. Offset    Size    HiRes EGA
  4664.  00h  8 BYTEs    F19/F14 font
  4665.  08h  8 BYTEs    F11/F8 font
  4666. --------V-10CD03-----------------------------
  4667. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  4668.     AX = CD03h
  4669. Return: CL = palette locking value
  4670.         00h none
  4671.         01h text modes only
  4672.         FFh all modes
  4673. SeeAlso: AX=CD01h
  4674. --------V-10CD04-----------------------------
  4675. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  4676.     AX = CD04h
  4677. Return: AL = mode number (see below)
  4678. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  4679.  
  4680. Values for video mode number:
  4681.  11h    80x25
  4682.  12h    80x43, 80x50
  4683.  13h    80x34, 80x36
  4684.  14h    80x60, 80x63
  4685.  19h    94x25
  4686.  1Ah    94x43, 94x50
  4687.  1Bh    94x36
  4688.  1Ch    94x63
  4689.  21h    108x25
  4690.  22h    108x43, 108x50
  4691.  23h    107x34, 108x36
  4692.  24h    108x60, 108x63
  4693.  31h    120x25
  4694.  32h    120x43, 120x50
  4695.  33h    132x25
  4696.  34h    132x44, 132x50
  4697.  39h    120x36
  4698.  3Ah    120x63
  4699.  3Bh    132x36
  4700.  3Ch    132x60
  4701. Index:    video modes
  4702. --------V-10CD05-----------------------------
  4703. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  4704.     AX = CD05h
  4705.     CL = type
  4706.         00h line cursor
  4707.         FFh box cursor
  4708. Note:    sets default cursor type for text-based programs
  4709. SeeAlso: AH=01h,AX=CD06h
  4710. --------V-10CD06-----------------------------
  4711. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  4712.     AX = CD06h
  4713. Return: CL = type
  4714.         00h line cursor
  4715.         FFh box cursor
  4716. SeeAlso: AH=03h,AX=CD05h
  4717. --------V-10CD07-----------------------------
  4718. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  4719.     AX = CD07h
  4720.     CL = hardware underline status
  4721.         00h off (color systems only)
  4722.         01h underline below characters
  4723.         02h strike through characters
  4724.     BL = foreground color for normal text (FFh = current)
  4725.     BH = foreground color for bright text (FFh = current)
  4726. Return: CL = hardware underline status
  4727.     BL = current foreground color for normal text
  4728.     BH = current foreground color for bright text
  4729. Notes:    when underline or strikeout is enabled in color text modes, the
  4730.       specified colors will be assigned temporarily to colors 01h and 09h,
  4731.       allowing affected text to match non-underlined text.    The color
  4732.       remapping uses values from the current onscreen palette regardless
  4733.       of the palette locking status (see AX=CD01h)
  4734.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  4735.       strikeout without color remapping
  4736. SeeAlso: AX=CD08h
  4737. --------V-10CD08-----------------------------
  4738. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  4739.     AX = CD08h
  4740. Return: CL = hardware underline status (see AX=CD07h)
  4741.     BL = foreground color for normal text
  4742.     BH = foreground color for bright text
  4743. Note:    only CL is valid on monochrome EGA systems
  4744. SeeAlso: AX=CD07h
  4745. --------V-10CD10-----------------------------
  4746. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  4747.     AX = CD10h
  4748.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  4749.     CX = ABCDh load 9xN alternate font (v2+)
  4750.        else number of characters to load
  4751.         DX = character offset into font table
  4752.         DS:SI -> 8-byte ASCII font name
  4753.     ES:BP -> font definitions
  4754. Return: AX = FFFFh if invalid font parameters
  4755. Notes:    loads the designated characters into UltraVision's resident font area
  4756.     should be followed by a video mode set to reload character generator
  4757. SeeAlso: AX=1100h
  4758. --------V-10CD-------------------------------
  4759. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  4760.     AH = CDh
  4761.     AL = text mode number (see AX=CD04h)
  4762. Return: AX = CDCDh if invalid mode
  4763. SeeAlso: AX=CD04h
  4764. --------A-10D0-------------------------------
  4765. INT 10 - CU Writer v1.4 - LOAD PICTURE
  4766.     AH = D0h
  4767.     ???
  4768. Return: ???
  4769. SeeAlso: AH=B0h"CU Writer",AH=C4h
  4770. --------V-10D5-------------------------------
  4771. INT 10 - Netroom SCRNCLK - ???
  4772.     AH = D5h
  4773.     ???
  4774. Return: ???
  4775. Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom
  4776. --------V-10DFA5-----------------------------
  4777. INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA
  4778.     AX = DFA5h
  4779. Return: AX = BDBFh if supported
  4780.         ES:DI -> ??? data area
  4781.         BX = ES
  4782. SeeAlso: AX=BFA0h
  4783. --------V-10EF-------------------------------
  4784. INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
  4785.     AH = EFh
  4786. Return: DL = video adapter type
  4787.         00h original Hercules
  4788.         01h Hercules Plus
  4789.         02h Hercules InColor???
  4790.     DH = memory mode byte
  4791.         01h "half" mode
  4792.         03h "full" mode
  4793. Program: MSHERC.COM is a support program for the Microsoft Quick languages which
  4794.       makes their graphics libraries compatible with a Hercules card by
  4795.       adding video modes 08h and 88h, and supporting text in the new
  4796.       graphics modes.
  4797. Notes:    while in mode 08h or 88h, INT 10 supports the Hercules card much like
  4798.       a CGA.
  4799.     MSHERC performs an installation check by setting DL=FFh and testing
  4800.       whether it has been changed on return
  4801. Index:    installation check;MSHERC
  4802. --------V-10F0-------------------------------
  4803. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  4804.     AH = F0h
  4805.     BL = register number
  4806.     BH = 00h
  4807.     DX = group index
  4808.         Pointer/data chips
  4809.            00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  4810.            08h Sequencer (5 registers) 3C4h
  4811.            10h Graphics Controller (9 registers) 3CEh
  4812.            18h Attribute Controller (20 registers) 3C0h
  4813.         Single registers
  4814.            20h Miscellaneous Output register 3C2h
  4815.            28h Feature Control register (3BAh mono modes, 3DAh color modes)
  4816.            30h Graphics 1 Position register 3CCh
  4817.            38h Graphics 2 Position register 3CAh
  4818. Return: BL = data
  4819. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4820.       compatibility box, and others
  4821. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  4822. --------V-10F1-------------------------------
  4823. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  4824.     AH = F1h
  4825.     DX = group index (see AH=F0h)
  4826.         if single register:
  4827.         BL = value to write
  4828.         otherwise
  4829.         BL = register number
  4830.         BH = value to write
  4831. Return: BL = data
  4832. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4833.       compatibility box, and others
  4834. SeeAlso: AX=7F05h,AH=F0h,AH=F3h
  4835. --------V-10F2-------------------------------
  4836. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  4837.     AH = F2h
  4838.     CH = starting register number
  4839.     CL = Number of registers (>1)
  4840.     DX = group index
  4841.          00h CRTC (3B4h mono modes, 3D4h color modes)
  4842.          08h Sequencer 3C4h
  4843.          10h Graphics Controller 3CEh
  4844.          18h Attribute Controller 3C0h
  4845.     ES:BX -> buffer, CL bytes
  4846. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4847.       compatibility box, and others
  4848. SeeAlso: AH=F0h,AH=F3h
  4849. --------V-10F3-------------------------------
  4850. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  4851.     AH = F3h
  4852.     CH = starting register
  4853.     CL = number of registers (>1)
  4854.     DX = group index (see AH=F2h)
  4855.     ES:BX -> buffer, CL bytes
  4856. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4857.       compatibility box, and others
  4858. SeeAlso: AX=7F05h,AH=F1h,AH=F2h
  4859. --------V-10F4-------------------------------
  4860. INT 10 - EGA Register Interface Library - READ REGISTER SET
  4861.     AH = F4h
  4862.     CX = number of registers to read (>1)
  4863.     ES:BX -> table of records (see below)
  4864. Return: register values in table filled in
  4865. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4866.       compatibility box, and others
  4867. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  4868.  
  4869. Format of entries in table of register records:
  4870. Offset    Size    Description
  4871.  00h    WORD    group index
  4872.         Pointer/data chips
  4873.            00h CRTC (3B4h mono modes, 3D4h color modes)
  4874.            08h Sequencer 3C4h
  4875.            10h Graphics Controller 3CEh
  4876.            18h Attribute Controller 3C0h
  4877.         Single registers
  4878.            20h Miscellaneous Output register 3C2h
  4879.            28h Feature Control register (3BAh mono modes, 3DAh color)
  4880.            30h Graphics 1 Position register 3CCh
  4881.            38h Graphics 2 Position register 3CAh
  4882.  02h    BYTE    register number (0 for single registers)
  4883.  03h    BYTE    register value
  4884. --------V-10F5-------------------------------
  4885. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  4886.     AH = F5h
  4887.     CX = number of registers to write (>1)
  4888.     ES:BX -> table of records (see AH=F4h)
  4889. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4890.       compatibility box, and others
  4891. SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
  4892. --------V-10F6-------------------------------
  4893. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  4894.     AH = F6h
  4895. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  4896.       others
  4897. SeeAlso: AH=F7h
  4898. --------V-10F7-------------------------------
  4899. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  4900.     AH = F7h
  4901.     DX = port number
  4902.        Pointer/data chips
  4903.           00h CRTC (3B4h mono modes, 3D4h color modes)
  4904.           08h Sequencer 3C4h
  4905.           10h Graphics Controller 3CEh
  4906.           18h Attribute Controller 3C0h
  4907.        Single registers
  4908.           20h Miscellaneous Output register 3C2h
  4909.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  4910.           30h Graphics 1 Position register 3CCh
  4911.           38h Graphics 2 Position register 3CAh
  4912.     ES:BX -> table of one-byte entries, one byte to be written to each
  4913.          register
  4914. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4915.       compatibility box, and others
  4916. SeeAlso: AH=F6h
  4917. --------V-10FA--BX0000-----------------------
  4918. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  4919.     AH = FAh
  4920.     BX = 0000h
  4921. Return: BX = 0000h if RIL driver not present
  4922.     ES:BX -> EGA Register Interface version number, if present:
  4923.         byte 0 = major release number
  4924.         byte 1 = minor release number
  4925. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4926.       compatibility box, and others
  4927. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  4928. --------K-10FA-------------------------------
  4929. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  4930.     AH = FAh
  4931. Return: AX = 00FAh if installed
  4932.         ES = segment of resident code
  4933. Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  4934.       Steiner
  4935. Index:    screen saver;FASTBUFF
  4936. --------V-10FE-------------------------------
  4937. INT 10 - TopView - GET SHADOW BUFFER
  4938.     AH = FEh
  4939.     ES:DI -> assumed video buffer
  4940.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  4941.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  4942. Return: ES:DI -> actual video buffer for calling process
  4943. Desc:    Determine the address of the virtual screen to which the program
  4944.       should write instead of the actual video memory; this permits
  4945.       programs to be multitasked without interfering with each other's
  4946.       output, and allows memory managers to move the video memory to
  4947.       permit larger programs to be loaded.
  4948. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  4949.       returned unchanged; RSIS is the Relocated Screen Interface
  4950.       Specification
  4951.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  4952.       whether a particular page exists
  4953.     TopView requires a call to AH=FFh to notify it that the screen has
  4954.       changed; DESQview will check for changes itself until the first call
  4955.       to AH=FFh
  4956. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  4957. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  4958. --------V-10FF-------------------------------
  4959. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  4960.     AH = FFh
  4961.     CX = number of consecutive changed characters
  4962.     ES:DI -> first changed character in shadow buffer
  4963. Notes:    avoid CX=0000h
  4964.     DESQview will discontinue the automatic screen updating initiated by
  4965.       AH=FEh after this call
  4966.     not supported (ignored) by DESQview/X 1.0x
  4967. SeeAlso: AH=93h,AH=FEh
  4968. --------E-10FF-------------------------------
  4969. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  4970.     AH = FFh
  4971.     AL = video mode (see below)
  4972. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  4973.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  4974. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  4975.  
  4976. Values for video mode number:
  4977.  00h    80x25 text
  4978.  01h    default text
  4979.  02h    CXxDX text
  4980.  03h    biggest text
  4981.  04h    320x200 graphics
  4982.  05h    default graphics
  4983.  06h    CXxDX graphics
  4984.  07h    biggest non-interlaced graphics
  4985.  08h    biggest graphics
  4986. Index:    video modes
  4987. --------V-10FF-------------------------------
  4988. INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION
  4989.     AH = FFh
  4990.     AL = emulation
  4991.         43h ('C') CGA emulation
  4992.         45h ('E') EGA emulation
  4993.         4Dh ('M') Hercules emulation
  4994.         56h ('V') VGA emulation
  4995.     ES:DI -> 'Calamity'
  4996. Return: VGA switched to suggested mode
  4997. SeeAlso: AH=00h,AX=007Fh,AX=5F01h
  4998. --------R-10FF00-----------------------------
  4999. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  5000.     AX = FF00h
  5001. Return: BL = 00h not connected
  5002.        = 01h connected
  5003. SeeAlso: AX=FF01h,AX=FF02h
  5004. --------R-10FF01-----------------------------
  5005. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  5006.     AX = FF01h
  5007. SeeAlso: AX=FF00h,AX=FF02h
  5008. --------R-10FF02-----------------------------
  5009. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  5010.     AX = FF02h
  5011. Return: ES:DI -> ASCIZ phone number
  5012. SeeAlso: AX=FF00h,AX=FF01h
  5013. --------C-11---------------------------------
  5014. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  5015. Desc:    automatically generated by the CPU when the AC flag is set, the current
  5016.       privilege level is 3, and a misaligned memory access (WORD not on an
  5017.       even address or DWORD not on a multiple of 4) is made
  5018. Note:    not all V86 monitors allow the AC flag to be set, such as Turbo
  5019.       Debugger 386
  5020. --------B-11---------------------------------
  5021. INT 11 - BIOS - GET EQUIPMENT LIST
  5022. Return: AX = BIOS equipment list word
  5023.         bits
  5024.         0      floppy disk(s) installed (see bits 6-7)
  5025.         1      80x87 coprocessor installed
  5026.         2,3      number of 16K banks of RAM on motherboard (PC only)
  5027.           number of 64K banks of RAM on motherboard (XT only)
  5028.         2      pointing device installed (PS)
  5029.         3      unused (PS)
  5030.         4-5      initial video mode
  5031.           00 EGA, VGA, or PGA
  5032.           01 40x25 color
  5033.           10 80x25 color
  5034.           11 80x25 monochrome
  5035.         6-7      number of floppies installed less 1 (if bit 0 set)
  5036.         8      DMA support installed (PCjr, some Tandy 1000s, 1400LT)
  5037.         9-11  number of serial ports installed
  5038.         12      game port installed
  5039.         13      serial printer attached (PCjr)
  5040.           internal modem installed (PC/Convertible)
  5041.         14-15 number of parallel ports installed
  5042. ---Compaq and many other 386/486 machines--
  5043.     EAX bit 23: page tables set so that Weitek coprocessor addressable in
  5044.             real mode
  5045.         bit 24: Weitek math coprocessor present
  5046. ---Compaq Systempro
  5047.     EAX bit 25: internal DMA parallel port available
  5048.         26: IRQ for internal DMA parallel port (if bit 25 set)
  5049.             0 = IRQ5
  5050.             1 = IRQ7
  5051.          27,28: parallel port DMA channel
  5052.             00 DMA channel 0
  5053.             01 DMA channel 0 ???
  5054.             10 reserved
  5055.             11 DMA channel 3
  5056. SeeAlso: INT 12
  5057. --------d-11----SI6A6A-----------------------
  5058. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  5059.     SI = 6A6Ah
  5060.     AH = command (see below)
  5061.     AL = SCSI Addressing
  5062.         bits 2-0 SCSI Target LUN (logical unit number)
  5063.         bits 5-3 SCSI Target ID
  5064.         bits 7-6 Host Adapter
  5065. Return: CF clear if successful
  5066.         DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
  5067.         AH = ??? for command 01h
  5068.     CF set on error
  5069.         AL = error code
  5070. SeeAlso: INT 21/AX=4402h"ASPI"
  5071.  
  5072. Values for SDLP command:
  5073.  00h    SDLP initialization
  5074.  01h    SDLP System Identify
  5075.  02h    simple read sectors
  5076.  03h    simple write sectors
  5077.  04h    simple verify sectors/seek to sector
  5078.  05h    get device size/type
  5079.  06h    ready unit
  5080.  07h    format unit
  5081.  08h    diagnostics
  5082.  09h    rewind
  5083.  0Ah    erase
  5084.  0Bh    write filemarks
  5085.  0Ch    space
  5086.  0Dh    prevent/allow media removal
  5087.  0Eh    load/unload media
  5088.  0Fh    reserved - returns good status
  5089.  10h    set block size
  5090.  11h    write setmark
  5091.  12h    set error level
  5092.  13h    get address of Request Sense Buffer
  5093.  14h    get SDLP error via Request Sense
  5094.  F0h    Vendor Unique Function (WD7000-FASST2 only)
  5095.  FDh    reset current SCSI HAC
  5096.  FEh    get/set current SCSI HAC
  5097.  FFh    execute SCSI command
  5098. ----------110225BX6900-----------------------
  5099. INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK
  5100.     AX = 0225h
  5101.     BX = 6900h
  5102. Return: BL = 23h
  5103.     ES:DI -> ASCIIZ "BLNKIT"
  5104. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  5105.       Inc.
  5106. SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h
  5107. Index:    screen saver;Blank-It
  5108. ----------110225BX6901-----------------------
  5109. INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING
  5110.     AX = 0225h
  5111.     BX = 6901h
  5112.     CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout
  5113.          largest value is 59 minutes (FBACh or 64428)
  5114. Return: CF clear if successful
  5115.         DI = 6A6Ah (possibly also 6A6Ah for all following functions)
  5116.         AH = ???
  5117.     CF set on error
  5118.         AL = error code
  5119. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6904h
  5120. Index:    screen saver;Blank-It
  5121. ----------110225BX6902-----------------------
  5122. INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE
  5123.     AX = 0225h
  5124.     BX = 6902h
  5125. Return: CF clear if successful
  5126.     CF set on error
  5127.         AL = error code
  5128. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6903h
  5129. Index:    screen saver;Blank-It
  5130. ----------110225BX6903-----------------------
  5131. INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE
  5132.     AX = 0225h
  5133.     BX = 6903h
  5134. Return: CF clear if successful
  5135.     CF set on error
  5136.         AL = error code
  5137. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6902h
  5138. Index:    screen saver;Blank-It
  5139. ----------110225BX6904-----------------------
  5140. INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT
  5141.     AX = 0225h
  5142.     BX = 6904h
  5143. Return: CF clear if successful
  5144.         BX = timeout (see BX=6901h)
  5145.     CF set on error
  5146.         AL = error code
  5147. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6901h
  5148. Index:    screen saver;Blank-It
  5149. ----------110225BX6905-----------------------
  5150. INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE
  5151.     AX = 0225h
  5152.     BX = 6905h
  5153. Return: CF clear if successful
  5154.     CF set on error
  5155.         AL = error code
  5156. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6906h
  5157. Index:    screen saver;Blank-It
  5158. ----------110225BX6906-----------------------
  5159. INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE
  5160.     AX = 0225h
  5161.     BX = 6906h
  5162. Return: CF clear if successful
  5163.     CF set on error
  5164.         AL = error code
  5165. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  5166.       Inc.
  5167. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6905h
  5168. Index:    screen saver;Blank-It
  5169. ----------110225BX6907-----------------------
  5170. INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN
  5171.     AX = 0225h
  5172.     BX = 6907h
  5173. Return: CF clear if successful
  5174.     CF set on error
  5175.         AL = error code
  5176. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6908h
  5177. Index:    screen saver;Blank-It
  5178. ----------110225BX6908-----------------------
  5179. INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN
  5180.     AX = 0225h
  5181.     BX = 6908h
  5182. Return: CF clear if successful
  5183.     CF set on error
  5184.         AL = error code
  5185. SeeAlso: AX=0225h/BX=6900h,AX=0252h/BX=6907h
  5186. Index:    screen saver;Blank-It
  5187. ----------110225BX6909-----------------------
  5188. INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING
  5189.     AX = 0225h
  5190.     BX = 6909h
  5191.     CL = key scan code (see below)
  5192. Return: CF clear if successful
  5193.     CF set on error
  5194.         AL = error code
  5195. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  5196.       Inc.
  5197. SeeAlso: AX=0225h/BX=6900h
  5198. Index:    screen saver;Blank-It|hotkeys;Blank-It
  5199.  
  5200. Values for key scan code:
  5201.  00h    No hot key
  5202.  1Dh    Left CTRL
  5203.  2Ah    Left Shift
  5204.  36h    Right Shift
  5205.  57h    F11
  5206.  58h    F12
  5207. ----------1105D7-----------------------------
  5208. INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
  5209.     AX = 05D7h
  5210.     BX = product ID (0088h)
  5211. Note:    called by the BC++ IDE when an application calls
  5212.       INT 12/AX=05D7h/BX=05D7h
  5213. SeeAlso: INT 12/AX=05D7h/BX=05D7h
  5214. Index:    installation check;Borland C++ IDE
  5215. --------F-1177-------------------------------
  5216. INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL
  5217.     AH = 77h
  5218.     AL = subfunction
  5219.         01h request SFENGINE start
  5220.         Return: AX = 0001h
  5221.         02h check if SFENGINE started
  5222.         Return: AX = 0000h or 0001h
  5223.         03h request SFENGINE stop
  5224.         Return: AX = 0001h
  5225.         04h check if SFENGINE stopped
  5226.         Return: AX = 0000h or 0001h
  5227.         05h installation check
  5228.         Return: AX = 0001h
  5229.         06h uninstall???
  5230.         BX:DX -> return address for successful uninstall???
  5231.         Return: (at caller's address)
  5232.             AX = 0000h
  5233.         else
  5234.         Return: AX = FFFFh
  5235. Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0"
  5236.         followed by internal data area???
  5237. SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch
  5238. Index:    installation check;RainboxFAX|installation check;SFENGINE
  5239. Index:    uninstall;RainboxFAX|uninstall;SFENGINE
  5240. --------F-1178-------------------------------
  5241. INT 11 - RainboxFAX v1.3 - SFENGINE API - ???
  5242.     AH = 78h
  5243.     AL = subfunction
  5244.         7801h set ???
  5245.         BX = new state for ???
  5246.             0000h ???
  5247.             else ???
  5248.         Return: AX = 0001h
  5249.         7802h set ???
  5250.         BX = ???
  5251.         CX = ???
  5252.         Return: AX = 0001h
  5253.         7803h set ???
  5254.         BX = new state for ???
  5255.             0000h ???
  5256.             else ???
  5257.         Return: AX = 0001h
  5258.         78XXh invalid subfunction
  5259.         Return: AX = FFFFh
  5260. SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch
  5261. --------F-1179-------------------------------
  5262. INT 11 - RainboxFAX v1.3 - SFENGINE API - ???
  5263.     AH = 79h
  5264.     AL = subfunction
  5265.         01h set ??? flag
  5266.         Return: AX = previous state (0000h already set, 0001h clear)
  5267.         02h clear ??? flag (see subfunc 01h)
  5268.         Return: AX = 0001h
  5269.         03h set ??? flag (different from subfn 02h or 04h)
  5270.         Return: AX = 0001h
  5271.         04h clear ??? flag (different from subfn 02h or 03h)
  5272.         Return: AX = 0001h
  5273.         else
  5274.         Return: AX = FFFFh
  5275. SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch
  5276. --------F-117A-------------------------------
  5277. INT 11 - RainboxFAX v1.3 - SFENGINE API - ???
  5278.     AH = 7Ah
  5279.     AL = subfunction
  5280.         01h set ??? flag
  5281.         Return: AX = previous state (0000h already set, 0001h clear)
  5282.         02h clear ??? flag
  5283.         Return: AX = 0001h
  5284.         03h set ??? flag (different from subfn 02h)
  5285.         Return: AX = 0001h
  5286.         else
  5287.         Return: AX = FFFFh
  5288. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch
  5289. --------F-117C-------------------------------
  5290. INT 11 - RainboxFAX v1.3 - SFENGINE API - ???
  5291.     AH = 7Ch
  5292.     AL = subfunction
  5293.         01h set ??? flag (see also subfn 02h)
  5294.         Return: AX = 0001h
  5295.         02h clear ??? flag (see also subfn 01h)
  5296.         Return: AX = 0001h
  5297.         else
  5298.         Return: AX = FFFFh
  5299. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah
  5300. --------S-11BC--DX1954-----------------------
  5301. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  5302.     AH = BCh
  5303.     DX = 1954h
  5304. Return: AX = 1954h
  5305.     ES:DX -> entry point of driver (instead of INT 14)
  5306. SeeAlso: INT 14/AH=04h"FOSSIL"
  5307. --------d-11FF--SI6A6A-----------------------
  5308. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  5309.     AH = FFh
  5310.     SI = 6A6Ah
  5311.     AL = SCSI Addressing
  5312.         bits 2-0 SCSI Target LUN (logical unit number)
  5313.         bits 5-3 SCSI Target ID
  5314.         bit 7    write flag, set for write operations, clear otherwise
  5315.     CX = bytes of data to be transmitted (max FFF0h)
  5316.     DH = 00h
  5317.     DL = length of SCSI Command Descriptor Block
  5318.     DS:DI -> SCSI Command Descriptor Block
  5319.     ES:BX -> data buffer
  5320. Return: CF set on error
  5321.         AL = error code
  5322.     CF clear if successful
  5323. Note:    because of busmaster operations with WD7000FASST avoid accessing
  5324.       video memory directly; check 386 memory manager for VDS support.
  5325.       The WD7000XTAT works with programmed IO and does not have this
  5326.       limitation.
  5327. SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
  5328. --------T-11FFFECXFFFE-----------------------
  5329. INT 11 - BACK&FORTH (before v1.62) API
  5330.     AX = FFFEh
  5331.     CX = FFFEh
  5332.     BX = function
  5333.         00h installation check
  5334.         Return: AX = 0001h BNFHIGH and BNFLOW both loaded
  5335.                = 0003h only BNFHIGH loaded
  5336.                else neither loaded
  5337.         01h ???
  5338.         Return: DX:AX -> ???
  5339.         02h ???
  5340.         03h ???
  5341.         04h ???
  5342.         05h ??? switches current PSP segment and stack if BNFLOW has not
  5343.             yet announced itself installed
  5344.         06h ???
  5345.         Return: AX = ???
  5346. SeeAlso: INT 12/AX=FFFEh
  5347. Index:    installation check;BACK&FORTH
  5348. --------B-12---------------------------------
  5349. INT 12 - BIOS - GET MEMORY SIZE
  5350. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  5351. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  5352.       XT, this value is set from the switches on the motherboard
  5353. SeeAlso: INT 11,INT 2F/AX=4A06h
  5354. --------K-12----CX1806-----------------------
  5355. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  5356.     CX = 1806h
  5357. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  5358.     CX = 1960h if installed
  5359. Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  5360.       accented characters and box drawing on standard QWERTY keyboards; it
  5361.       also provides break-to-DOS and screen blanking capabilities
  5362. Index:    screen saver;KEYBUI
  5363. --------d-12----CX1807-----------------------
  5364. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  5365.     CX = 1807h
  5366. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  5367.     CX = 1961h if installed
  5368. Program: PARKER is an optionally-resident hard disk parking program by Johan
  5369.       Zwiekhorst
  5370. ----------1205D7BX05D7-----------------------
  5371. INT 12 U - Borland C++ IDE - INSTALLATION CHECK
  5372.     AX = 05D7h (1495d)
  5373.     BX = 05D7h
  5374. Note:    the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
  5375. SeeAlso: INT 11/AX=05D7h/BX=0088h
  5376. --------T-12FFFECXFFFE-----------------------
  5377. INT 12 - Back&Forth v1.62+ - API
  5378.     AX = FFFEh
  5379.     CX = FFFEh
  5380.     BX = function
  5381.         00h installation check
  5382.         Return: AX = 0001h installed
  5383.                  else  not loaded
  5384.         02h build program ID list
  5385.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  5386.         Return: AX = number of programs defined
  5387.             ES:DI buffer filled with AX words
  5388.         03h switch to specified task (task need not be open yet)
  5389.         DX = two-letter program ID
  5390.         Return: AX = 0000h if task undefined
  5391.         04h ???
  5392.         05h ???
  5393.         06h get version (undoc)
  5394.         Return: AX = version * 100 (v1.71 = 00ABh)
  5395.         07h ???
  5396.         08h get open tasks (undoc)
  5397.         ES:DI -> task info buffer (see below)
  5398.         Return: AX = number of open tasks (max 20)
  5399.         09h ???
  5400. Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
  5401. SeeAlso: INT 11/AX=FFFEh
  5402. Index:    installation check;BACK&FORTH
  5403.  
  5404. Format of task info buffer:
  5405. Offset    Size    Description
  5406.  00h 21 BYTEs    ASCIZ task name
  5407.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  5408.  16h    WORD    hotkey scan code
  5409.  18h    WORD    program ID
  5410. Index:    hotkeys;Back&Forth
  5411. --------B-1300-------------------------------
  5412. INT 13 - DISK - RESET DISK SYSTEM
  5413.     AH = 00h
  5414.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  5415. Return: AH = status (see AH=01h)
  5416.     CF clear if successful (returned AH=00h)
  5417.     CF set on error
  5418. Note:    forces controller to recalibrate drive heads (seek to track 0)
  5419. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
  5420. --------B-1301-------------------------------
  5421. INT 13 - DISK - GET STATUS OF LAST OPERATION
  5422.     AH = 01h
  5423.     DL = drive (bit 7 set for hard disk)
  5424. Return: CF clear if successful (returned status 00h)
  5425.     CF set on error
  5426.     AH = status of previous operation (see below)
  5427. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  5428.       status in both AH and AL
  5429.  
  5430. Values for status:
  5431.  00h    successful completion
  5432.  01h    invalid function in AH or invalid parameter
  5433.  02h    address mark not found
  5434.  03h    disk write-protected
  5435.  04h    sector not found/read error
  5436.  05h    reset failed (hard disk)
  5437.  06h    disk changed (floppy)
  5438.  07h    drive parameter activity failed (hard disk)
  5439.  08h    DMA overrun
  5440.  09h    attempted DMA across 64K boundary
  5441.  0Ah    bad sector detected (hard disk)
  5442.  0Bh    bad track detected (hard disk)
  5443.  0Ch    unsupported track or invalid media
  5444.  0Dh    invalid number of sectors on format (hard disk)
  5445.  0Eh    control data address mark detected (hard disk)
  5446.  0Fh    DMA arbitration level out of range (hard disk)
  5447.  10h    uncorrectable CRC or ECC error on read
  5448.  11h    data ECC corrected (hard disk)
  5449.  20h    controller failure
  5450.  40h    seek failed
  5451.  80h    timeout (not ready)
  5452.  AAh    drive not ready (hard disk)
  5453.  BBh    undefined error (hard disk)
  5454.  CCh    write fault (hard disk)
  5455.  E0h    status register error (hard disk)
  5456.  FFh    sense operation failed (hard disk)
  5457. --------B-1302-------------------------------
  5458. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  5459.     AH = 02h
  5460.     AL = number of sectors to read (must be nonzero)
  5461.     CH = low eight bits of cylinder number
  5462.     CL = sector number 1-63 (bits 0-5)
  5463.          high two bits of cylinder (bits 6-7, hard disk only)
  5464.     DH = head number
  5465.     DL = drive number (bit 7 set for hard disk)
  5466.     ES:BX -> data buffer
  5467. Return: CF set on error
  5468.         if AH = 11h (corrected ECC error), AL = burst length
  5469.     CF clear if successful
  5470.     AH = status (see AH=01h)
  5471.     AL = number of sectors transferred
  5472. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  5473.       enough; the read should be retried at least three times, resetting
  5474.       the disk with AH=00h between attempts
  5475.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  5476.       DH (head number) since the WD-1003 controller which is the standard
  5477.       AT controller (and the controller that IDE emulates) only supports
  5478.       16 heads
  5479.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  5480.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  5481.       into bits 6 and 7 of DH
  5482. SeeAlso: AH=03h,AH=0Ah
  5483. --------B-1303-------------------------------
  5484. INT 13 - DISK - WRITE DISK SECTOR(S)
  5485.     AH = 03h
  5486.     AL = number of sectors to write (must be nonzero)
  5487.     CH = low eight bits of cylinder number
  5488.     CL = sector number 1-63 (bits 0-5)
  5489.          high two bits of cylinder (bits 6-7, hard disk only)
  5490.     DH = head number
  5491.     DL = drive number (bit 7 set for hard disk)
  5492.     ES:BX -> data buffer
  5493. Return: CF set on error
  5494.     CF clear if successful
  5495.     AH = status (see AH=01h)
  5496.     AL = number of sectors transferred
  5497. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  5498.       enough; the write should be retried at least three times, resetting
  5499.       the disk with AH=00h between attempts
  5500.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  5501.       DH (head number) since the WD-1003 controller which is the standard
  5502.       AT controller (and the controller that IDE emulates) only supports
  5503.       16 heads
  5504.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  5505.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  5506.       into bits 6 and 7 of DH
  5507. SeeAlso: AH=02h,AH=0Bh
  5508. --------B-1304-------------------------------
  5509. INT 13 - DISK - VERIFY DISK SECTOR(S)
  5510.     AH = 04h
  5511.     AL = number of sectors to verify (must be nonzero)
  5512.     CH = low eight bits of cylinder number
  5513.     CL = sector number 1-63 (bits 0-5)
  5514.          high two bits of cylinder (bits 6-7, hard disk only)
  5515.     DH = head number
  5516.     DL = drive number (bit 7 set for hard disk)
  5517.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  5518. Return: CF set on error
  5519.     CF clear if successful
  5520.     AH = status (see AH=01h)
  5521.     AL = number of sectors verified
  5522. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  5523.       enough; the write should be retried at least three times, resetting
  5524.       the disk with AH=00h between attempts
  5525.     this function does not compare the disk with memory, it merely
  5526.       checks whether the sector's stored CRC matches the data's actual CRC
  5527.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  5528.       DH (head number) since the WD-1003 controller which is the standard
  5529.       AT controller (and the controller that IDE emulates) only supports
  5530.       16 heads
  5531.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  5532.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  5533.       into bits 6 and 7 of DH
  5534. SeeAlso: AH=02h
  5535. --------B-1305-------------------------------
  5536. INT 13 - FLOPPY - FORMAT TRACK
  5537.     AH = 05h
  5538.     AL = number of sectors to format
  5539.     CH = track number
  5540.     DH = head number
  5541.     DL = drive number
  5542.     ES:BX -> address field buffer (see below)
  5543. Return: CF set on error
  5544.     CF clear if successful
  5545.     AH = status (see AH=01h)
  5546. Notes:    on AT or higher, call AH=17h first
  5547.     the number of sectors per track is read from the diskette parameter
  5548.       table pointed at by INT 1E
  5549. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  5550.  
  5551. Format of address field buffer entry (one per sector in track):
  5552. Offset    Size    Description
  5553.  00h    BYTE    track number
  5554.  01h    BYTE    head number (0-based)
  5555.  02h    BYTE    sector number
  5556.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  5557. --------B-1305-------------------------------
  5558. INT 13 - FIXED DISK - FORMAT TRACK
  5559.     AH = 05h
  5560.     AL = interleave value (XT-type controllers only)
  5561.     ES:BX -> 512-byte format buffer
  5562.         the first 2*(sectors/track) bytes contain F,N for each sector
  5563.            F = 00h for good sector, 80h for bad sector
  5564.            N = sector number
  5565.     CH = cylinder number (bits 8,9 in high bits of CL)
  5566.     CL = high bits of cylinder number (bits 7,6)
  5567.     DH = head
  5568.     DL = drive
  5569. Return: AH = status code (see AH=01h)
  5570. Notes:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  5571.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  5572.       into bits 6 and 7 of DH
  5573.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  5574.       first
  5575.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  5576.       DH (head number) since the WD-1003 controller which is the standard
  5577.       AT controller (and the controller that IDE emulates) only supports
  5578.       16 heads
  5579. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  5580. --------d-1305-------------------------------
  5581. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  5582.     AH = 05h
  5583.     DL = hard drive ID
  5584.     ES:BX -> mode select data (see below)
  5585. Return: CF set on error
  5586.     AH = status code (see AH=01h)
  5587. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
  5588.       format a SCSI disk with the desired parameters
  5589.     the mode select data below is from the SCSI-1 specification
  5590.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5591.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5592. SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
  5593.  
  5594. Format of mode select data:
  5595. Offset    Size    Description
  5596.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  5597.  01h    BYTE    reserved (0)
  5598.  02h    BYTE    medium type (0 for hard disk)
  5599.  03h    BYTE    reserved (0)
  5600.  04h    BYTE    block descriptor length (8)
  5601.  05h    BYTE    density code (0 for hard disk)
  5602.  06h  3 BYTEs    (big-endian) number of blocks (000000h for entire disk)
  5603.  09h    BYTE    reserved (0)
  5604.  0Ah  3 BYTEs    (big-endian) block length (512 standard, or 256)
  5605.  0Dh    ???    vendor-specific parameter bytes (optional)
  5606. --------B-1306-------------------------------
  5607. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  5608.     AH = 06h
  5609.     AL = interleave value
  5610.     CH = cylinder number (bits 8,9 in high bits of CL)
  5611.     CL = sector number
  5612.     DH = head
  5613.     DL = drive
  5614. Return: AH = status code (see AH=01h)
  5615. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  5616.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  5617.       into bits 6 and 7 of DH
  5618. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  5619. --------d-1306-------------------------------
  5620. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  5621.     AH = 06h
  5622.     AL = interleave
  5623.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  5624.     DL = hard drive ID
  5625.     DH = bits 7-5 drive LUN
  5626.          bit 4    defect list is available
  5627.          bit 3    defect list is complete (erase drive's defect list)
  5628.          bits 2-0 defect table format
  5629.               (000=use defect table A, 100=use defect table B,
  5630.               101=use defect table C)
  5631.     ES:BX ->  defect table A, B or C (see below)
  5632. Return: CF set on error
  5633.     AH = status code (see AH=01h)
  5634. Notes:    block addresses must be in ascending order (for table B, cylinder is
  5635.       most significant, byte from index least significant; for table C,
  5636.       cylinder is most significant, sector number least significant)
  5637.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  5638.       track shall be reassigned
  5639.     table C defect sector number of FFFFFFFFh indicates that the entire
  5640.       track shall be reassigned
  5641.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5642.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5643. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  5644.  
  5645. Format of defect table A:
  5646. Offset    Size    Description
  5647.  00h    WORD    number of bytes remaining in table
  5648.  02h    BYTE    reserved (0)
  5649.  03h    BYTE    reserved (0)
  5650.  04h    WORD    (big-endian) defect list length (4*number of defects)
  5651.  06h  4 DWORDs    (big-endian) defect block addresses
  5652.  
  5653. Format of defect table B:
  5654. Offset    Size    Description
  5655.  00h    WORD    number of bytes remaining in table
  5656.  02h    BYTE    reserved (0)
  5657.  03h    BYTE    reserved (0)
  5658.  04h    WORD    (big-endian) defect list length (8*number of defects)
  5659.  06h 8N BYTEs    defect list [array] (see below)
  5660.  
  5661. Format of defect table C:
  5662. Offset    Size    Description
  5663.  00h    WORD    number of bytes remaining in table
  5664.  02h    BYTE    reserved (0)
  5665.  03h    BYTE    reserved (0)
  5666.  04h    WORD    (big-endian) defect list length (8*number of defects)
  5667.  06h 8N BYTEs    defect list [array] (see below)
  5668.  
  5669. Format of defect list entry:
  5670. Offset    Size    Description
  5671.  00h  3 BYTEs    (big-endian) cylinder number of defect
  5672.  03h    BYTE    head number of defect
  5673.  04h    DWORD    (big-endian) defect bytes from index
  5674. --------d-1306-------------------------------
  5675. INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
  5676.     AH = 06h
  5677. Return: AH = status code (see AH=01h)
  5678.     CF clear if successful
  5679.         AL = first drive supported
  5680.         (80h nonconcurrent operation, 81h concurrent operation)
  5681.     CF set on error
  5682. Desc:    determine the number of the first supported SCSI drive
  5683. Note:    the return value is 80h when two SCSI drives are supported, 81h if
  5684.       only one SCSI drive is installed
  5685. SeeAlso: AH=08h
  5686. --------B-1307-------------------------------
  5687. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  5688.     AH = 07h
  5689.     AL = interleave value (XT only)
  5690.     ES:BX = 512-byte format buffer (see AH=05h)
  5691.     CH = cylinder number (bits 8,9 in high bits of CL)
  5692.     CL = sector number
  5693.     DH = head
  5694.     DL = drive
  5695. Return: AH = status code (see AH=01h)
  5696. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  5697.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  5698.       into bits 6 and 7 of DH
  5699. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  5700. --------d-1307-------------------------------
  5701. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  5702.     AH = 07h
  5703.     AL = interleave (0 = default, 1 = consecutive sectors,
  5704.            2 - 255 = vendor unique)
  5705.     DL = hard drive ID
  5706. Return: CF set on error
  5707.     AH = status code (see AH=01h)
  5708. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  5709. --------B-1308-------------------------------
  5710. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  5711.     AH = 08h
  5712.     DL = drive (bit 7 set for hard disk)
  5713. Return: CF set on error
  5714.         AH = status (07h) (see AH=01h)
  5715.     CF clear if successful
  5716.         AH = 00h
  5717.         BL = drive type (AT/PS2 floppies only) (see below)
  5718.         CH = low eight bits of maximum cylinder number
  5719.         CL = maximum sector number (bits 5-0)
  5720.          high two bits of maximum cylinder number (bits 7-6)
  5721.         DH = maximum head number
  5722.         DL = number of drives
  5723.         ES:DI -> drive parameter table (floppies only)
  5724. Notes:    may return successful even though specified drive is greater than the
  5725.       number of attached drives of that type (floppy/hard); check DL to
  5726.       ensure validity
  5727.     for systems predating the IBM AT, this call is only valid for hard
  5728.       disks, as it is implemented by the hard disk BIOS rather than the
  5729.       ROM BIOS
  5730.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  5731.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  5732. SeeAlso: AH=06h"Adaptec",AH=15h,INT 1E,INT 41
  5733.  
  5734. Values for drive type:
  5735.  01h    360K
  5736.  02h    1.2M
  5737.  03h    720K
  5738.  04h    1.44M
  5739.  05h    ??? (reportedly an obscure drive type shipped on some IBM machines)
  5740.     2.88M on some machines (at least AMI 486 BIOS)
  5741.  06h    2.88M
  5742. --------B-1309-------------------------------
  5743. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  5744.     AH = 09h
  5745.     DL = drive (80h for first, 81h for second)
  5746. Return: CF clear if successful
  5747.     CF set on error
  5748.     AH = status (see AH=01h)
  5749. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  5750.       INT 41
  5751.     on the AT and later, this function uses the parameter table pointed at
  5752.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  5753.       DL=81h
  5754. SeeAlso: INT 41,INT 46
  5755. --------B-130A-------------------------------
  5756. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  5757.     AH = 0Ah
  5758.     AL = number of sectors
  5759.     CH = low eight bits of cylinder number
  5760.     CL = sector number (bits 5-0)
  5761.          high two bits of cylinder number (bits 7-6)
  5762.     DH = head number
  5763.     DL = drive number (80h = first, 81h = second)
  5764.     ES:BX -> data buffer
  5765. Return: CF clear if successful
  5766.     CF set on error
  5767.     AH = status (see AH=01h)
  5768.     AL = number of sectors transferred
  5769. Notes:    this function reads in four to seven bytes of error-correcting code
  5770.       along with each sector's worth of information
  5771.     data errors are not automatically corrected, and the read is aborted
  5772.       after the first sector with an ECC error
  5773.     used for diagnostics only on PS/2 systems
  5774. SeeAlso: AH=02h,AH=0Bh
  5775. --------B-130B-------------------------------
  5776. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  5777.     AH = 0Bh
  5778.     AL = number of sectors
  5779.     CH = low eight bits of cylinder number
  5780.     CL = sector number (bits 5-0)
  5781.          high two bits of cylinder number (bits 7-6)
  5782.     DH = head number
  5783.     DL = drive number (80h = first, 81h = second)
  5784.     ES:BX -> data buffer
  5785. Return: CF clear if successful
  5786.     CF set on error
  5787.     AH = status (see AH=01h)
  5788.     AL = number of sectors transferred
  5789. Notes:    each sector's worth of data must be followed by four to seven bytes of
  5790.       error-correction information
  5791.     used for diagnostics only on PS/2 systems
  5792. SeeAlso: AH=03h,AH=0Ah
  5793. --------B-130C-------------------------------
  5794. INT 13 - HARD DISK - SEEK TO CYLINDER
  5795.     AH = 0Ch
  5796.     CH = low eight bits of cylinder number
  5797.     CL = sector number (bits 5-0)
  5798.          high two bits of cylinder number (bits 7-6)
  5799.     DH = head number
  5800.     DL = drive number (80h = first, 81h = second hard disk)
  5801. Return: CF set on error
  5802.     CF clear if successful
  5803.     AH = status (see AH=01h)
  5804. SeeAlso: AH=00h,AH=02h,AH=0Ah
  5805. --------d-130D-------------------------------
  5806. INT 13 - HARD DISK - RESET HARD DISKS
  5807.     AH = 0Dh
  5808.     DL = drive number (80h = first, 81h = second hard disk)
  5809. Return: CF set on error
  5810.     CF clear if successful
  5811.     AH = status (see AH=01h)
  5812. Notes:    reinitializes the hard disk controller, resets the specified drive's
  5813.       parameters, and recalibrates the drive's heads (seek to track 0)
  5814.     not for PS/2 ESDI drives
  5815. SeeAlso: AH=00h,INT 21/AH=0Dh
  5816. --------B-130E-------------------------------
  5817. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  5818.     AH = 0Eh
  5819.     DL = drive number (80h = first, 81h = second hard disk)
  5820.     ES:BX -> buffer
  5821. Return: CF set on error
  5822.     CF clear if successful
  5823.     AH = status code (see AH=01h)
  5824. Notes:    transfers controller's sector buffer.  No data is read from the drive
  5825.     used for diagnostics only on PS/2 systems
  5826. SeeAlso: AH=0Ah
  5827. --------B-130F-------------------------------
  5828. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  5829.     AH = 0Fh
  5830.     DL = drive number (80h = first, 81h = second hard disk)
  5831.     ES:BX -> buffer
  5832. Return: CF set on error
  5833.     CF clear if successful
  5834.     AH = status code (see AH=01h)
  5835. Notes:    does not write data to the drive
  5836.     should be called before formatting to initialize an XT-type
  5837.       controller's sector buffer
  5838.     used for diagnostics only on PS/2 systems
  5839. SeeAlso: AH=0Bh
  5840. --------B-1310-------------------------------
  5841. INT 13 - HARD DISK - CHECK IF DRIVE READY
  5842.     AH = 10h
  5843.     DL = drive number (80h = first, 81h = second hard disk)
  5844. Return: CF set on error
  5845.     CF clear if successful
  5846.     AH = status (see AH=01h)
  5847. --------B-1311-------------------------------
  5848. INT 13 - HARD DISK - RECALIBRATE DRIVE
  5849.     AH = 11h
  5850.     DL = drive number (80h = first, 81h = second hard disk)
  5851. Return: CF set on error
  5852.     CF clear if successful
  5853.     AH = status (see AH=01h)
  5854. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  5855. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  5856. --------B-1312-------------------------------
  5857. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  5858.     AH = 12h
  5859.     DL = drive number (80h = first, 81h = second hard disk)
  5860. Return: CF set on error
  5861.     CF clear if successful
  5862.     AH = status code (see AH=01h)
  5863. SeeAlso: AH=13h,AH=14h
  5864. --------d-1312-------------------------------
  5865. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  5866.     AH = 12h
  5867.     DL = hard drive ID
  5868. Return: CF set on error
  5869.     AH = status code (see AH=01h)
  5870. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  5871.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  5872.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  5873.       is displayed
  5874.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5875.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5876. --------B-1313-------------------------------
  5877. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  5878.     AH = 13h
  5879.     DL = drive number (80h = first, 81h = second hard disk)
  5880. Return: CF set on error
  5881.     CF clear if successful
  5882.     AH = status code (see AH=01h)
  5883. SeeAlso: AH=12h,AH=14h
  5884. --------B-1314-------------------------------
  5885. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  5886.     AH = 14h
  5887. Return: CF set on error
  5888.     CF clear if successful
  5889.     AH = status code (see AH=01h)
  5890. SeeAlso: AH=12h,AH=13h
  5891. --------B-1315-------------------------------
  5892. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  5893.     AH = 15h
  5894.     DL = drive number (bit 7 set for hard disk)
  5895. Return: CF clear if successful
  5896.         AH = type code
  5897.         00h no such drive
  5898.         01h floppy without change-line support
  5899.         02h floppy with change-line support
  5900.         03h hard disk
  5901.             CX:DX = number of 512-byte sectors
  5902.     CF set on error
  5903.         AH = status (see AH=01h)
  5904. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  5905. --------B-1316-------------------------------
  5906. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  5907.     AH = 16h
  5908.     DL = drive number
  5909. Return: CF clear if change line inactive
  5910.         AH = 00h (disk not changed)
  5911.     CF set if change line active
  5912.         AH = status
  5913.         06h change line active or not supported
  5914.         80h drive not ready or not present
  5915. Note:    call AH=15h first to determine whether the drive supports a change
  5916.       line
  5917. SeeAlso: AH=15h
  5918. --------B-1317-------------------------------
  5919. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  5920.     AH = 17h
  5921.     AL = format type
  5922.         01h = 320/360K disk in 360K drive
  5923.         02h = 320/360K disk in 1.2M drive
  5924.         03h = 1.2M disk in 1.2M drive
  5925.         04h = 720K disk in 720K drive
  5926.     DL = drive number
  5927. Return: CF set on error
  5928.     CF clear if successful
  5929.     AH = status (see AH=01h)
  5930. Note:    this function does not handle 1.44M drives; use AH=18h instead
  5931. SeeAlso: AH=15h,AH=18h
  5932. --------d-131700-----------------------------
  5933. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  5934.     AX = 1700h
  5935.     CL = length of buffer
  5936.     DL = hard drive ID
  5937.     ES:BX -> buffer for info
  5938. Return: CF clear if successful
  5939.         CH = number of bytes returned in buffer???
  5940.     CF set on error
  5941.         AH = status code (see AH=01h)
  5942. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  5943.     information block bytes 5-n are vendor-specific in older SCSI devices
  5944.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  5945.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  5946. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  5947.  
  5948. Format of SCSI inquiry information block:
  5949. Offset    Size    Description
  5950.  00h    BYTE    device type
  5951.         bits 0-4: peripheral device type (see below)
  5952.         bits 5-7: peripheral qualifier (see below)
  5953.  01h    BYTE    device type modifier
  5954.         bits 0-6: device type modifier
  5955.         bit 7: removable medium
  5956.  02h    BYTE    SCSI version
  5957.         bits 0-2: ANSI-approved version
  5958.               000 device might or might not comply to ANSI standard
  5959.               001 device complies to ANSI SCSI-1
  5960.               010 device complies to ANSI SCSI-2
  5961.               other reserved
  5962.         bits 3-5: ECMA version
  5963.         bits 6,7: ISO version
  5964.  03h    BYTE    data format/capabilities
  5965.         bits 0-2: response data format
  5966.               000 information block is as specified in SCSI-1
  5967.               001 information block is as specified in CCS
  5968.               010 information block is as specified in SCSI-2
  5969.               other reserved
  5970.         bits 4,5: reserved
  5971.         bit 6: terminate I/O process supported
  5972.         bit 7: asynchronous event notification supported
  5973.  04h    BYTE    additional data length (total remaining bytes)
  5974.  05h  2 BYTEs    reserved
  5975.  07h    BYTE    device capabilities (see below)
  5976.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  5977.  10h  8 BYTEs    product identification (space-padded ASCII)
  5978.  20h  4 BYTEs    product revision level (space-padded ASCII)
  5979.  24h 20 BYTEs    vendor specific
  5980.  38h 40 BYTEs    reserved
  5981.  60h    var    vendor specific parameters
  5982.  
  5983. Values for peripheral device type:
  5984.  00h    direct-access device (e.g., magnetic disk)
  5985.  01h    sequential-access device (e.g., magnetic tape)
  5986.  02h    printer device
  5987.  03h    processor device
  5988.  04h    write-once device (e.g., some optical disks)
  5989.  05h    CD-ROM device
  5990.  06h    scanner device
  5991.  07h    optical memory device (e.g., some optical disks)
  5992.  08h    medium changer device (e.g., jukeboxes)
  5993.  09h    communications device
  5994.  0Ah    (defined by ASC IT8)
  5995.  0Bh    (defined by ASC IT8)
  5996.  0Ch-1Eh reserved
  5997.  1Fh    unknown or no device type
  5998.  
  5999. Values for peripheral qualifier:
  6000.  000b    device is currently connected to this logical unit and available
  6001.  001b    target is capable of supporting the specified peripheral, but the
  6002.       physical device is not currently connected to this logical unit
  6003.  010b    reserved
  6004.  011b    target can't support a physical device on this logical unit
  6005.  1xxb    vendor specific
  6006.  
  6007. Bitfields for device capabilities:
  6008.  bit 0    device responds to RESET with a hard RESET
  6009.  bit 1    tagged command queuing supported
  6010.  bit 2    reserved
  6011.  bit 3    linked commands supported
  6012.  bit 4    synchronous data transfer supported
  6013.  bit 5    16-bit transfers supported
  6014.  bit 6    32-bit transfers supported
  6015.  bit 7    relative addressing supported
  6016. --------B-1318-------------------------------
  6017. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  6018.     AH = 18h
  6019.     DL = drive number
  6020.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  6021.     CL = sectors per track (bits 0-5)
  6022.          top 2 bits of highest cylinder number (bits 6,7)
  6023. Return: AH = status
  6024.         00h requested combination supported
  6025.         01h function not available
  6026.         0Ch not supported or drive type unknown
  6027.         80h there is no disk in the drive
  6028.     ES:DI -> 11-byte parameter table
  6029. SeeAlso: AH=05h,AH=07h,AH=17h
  6030. --------d-1318-------------------------------
  6031. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  6032.     AH = 18h
  6033.     DL = hard drive ID
  6034. Return: CF set on error
  6035.         AH = status code (see AH=01h)
  6036.     CF clear if successful
  6037.         AX = 4321h (magic number)
  6038.         CX = controller family code (see below)
  6039.         ---if family code=0200h
  6040.         DH = number of exclusively ROM-controlled SCSI devices
  6041.         DL = canonical SCSI device number for specified drive
  6042.         ---if family code <> 0200h
  6043.         BH = number of exclusively ROM-controlled SCSI devices
  6044.         BL = canonical SCSI device number for specified drive
  6045. Notes:    also sets an internal flag (non-resettable) which prevents some
  6046.       controller messages from being displayed, allows writes to
  6047.       removable devices (use caution!), and enables the INT 13 interface
  6048.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  6049.       versions
  6050.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  6051.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  6052. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  6053.  
  6054. Values for controller family code:
  6055.  0200h    TMC-1680/? (ROM 3.0)
  6056.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  6057.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  6058.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  6059.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  6060. --------B-1319-------------------------------
  6061. INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
  6062.     AH = 19h
  6063.     DL = drive
  6064. Return: CF set on error
  6065.     AH = status (see AH=01h)
  6066. SeeAlso: AH=11h
  6067. --------d-1319-------------------------------
  6068. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  6069.     AH = 19h
  6070.     DL = hard drive ID
  6071. Return: CF set on error
  6072.         AH = status code (see AH=01h)
  6073.     CF clear if successful
  6074.         AH = disk type (03h = fixed disk)
  6075.         CX:DX = number of 512-byte sectors
  6076. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  6077.       adjusts the result for 512-byte sectors
  6078.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  6079.       sector" (nnn=256 or 512, the only sizes supported in the translation
  6080.       code)
  6081.     should probably be called when a removable device has its media changed
  6082.     returns the same values as AH=15h
  6083.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  6084.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  6085. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  6086. --------d-131A-------------------------------
  6087. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  6088.     AH = 1Ah
  6089.     AL = defect table count
  6090.     CL = format modifiers (see below)
  6091.     DL = drive
  6092.     ES:BX -> defect table
  6093. Return: CF set on error
  6094.     AH = status (see AH=01h)
  6095. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  6096.       cylinder is formatted
  6097. SeeAlso: AH=07h,INT 15/AH=0Fh
  6098.  
  6099. Bitfields for format modifiers:
  6100.  bit 4    generate periodic interrupt
  6101.  bit 3    perform surface analysis
  6102.  bit 2    update secondary defect map
  6103.  bit 1    ignore secondary defect map
  6104.  bit 0    ignore primary defect map
  6105. --------d-131A-------------------------------
  6106. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  6107.     AH = 1Ah
  6108.     CH = track (bits 8,9 in high bits of CL)
  6109.     CL = sector (01h to number of sectors/track for drive)
  6110.     DH = head
  6111.     DL = hard drive ID
  6112. Return: CF set on error
  6113.     AH = status code (see AH=01h)
  6114.     CX:DX = logical block number of last quickly-accessible block after
  6115.         given block
  6116. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  6117.       logical block address of the last block after which a substantial
  6118.       delay in data transfer will be encountered (usually the last block
  6119.       on the current cylinder).  No translation to 512 byte sectors is
  6120.       performed on the result if data is stored on the disk in other than
  6121.       512 byte sectors.
  6122.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  6123.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  6124. SeeAlso: AH=15h,AH=19h"SCSI"
  6125. --------d-131B-------------------------------
  6126. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  6127.     AH = 1Bh
  6128.     AL = number of record
  6129.     DL = drive
  6130.     ES:BX -> buffer for manufacturing header (defect list)
  6131. Return: CF set on error
  6132.         AH = status
  6133. Note:    manufacturing header format (Defect Map Record format) can be found
  6134.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  6135. --------d-131B-------------------------------
  6136. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  6137.     AH = 1Bh
  6138.     DL = hard drive ID
  6139. Return: CF set on error
  6140.         AH = status code (see AH=01h)
  6141.     CF clear if successful
  6142.         ES:BX -> SCSI disk information block
  6143. Notes:    also sets a non-resettable flag which prevents some controller messages
  6144.       from being displayed
  6145.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  6146.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  6147. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  6148.  
  6149. Format of SCSI disk information block:
  6150. Offset    Size    Description
  6151.  00h    BYTE    drive physical information (see below)
  6152.  01h    WORD    translated number of cylinders
  6153.  03h    BYTE    translated number of heads
  6154.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  6155.  05h    BYTE    drive address
  6156.         bits 0-2: logical unit number
  6157.         bits 3-5: device number
  6158.  06h    BYTE    01h at initialization
  6159.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  6160.  08h    BYTE    00h
  6161.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  6162.  0Ah    BYTE    00h
  6163.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  6164.  15h    DWORD    translated number of sectors on device
  6165.  
  6166. Bitfields for device physical information:
  6167.  bit 0    ???
  6168.  bit 1    device uses parity
  6169.  bit 2    256 bytes per sector instead of 512
  6170.  bit 3    don't have capacity yet???
  6171.  bit 4    disk is removable
  6172.  bit 5    logical unit number is not present
  6173. --------d-131C-------------------------------
  6174. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  6175.     AH = 1Ch
  6176.     DL = hard drive ID (any valid SCSI hard disk)
  6177. Return: CF set on error
  6178.         AH = status code (see AH=01h)
  6179.     CF clear if successful
  6180.         ES:BX -> first byte of free RAM on controller
  6181. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  6182.       to 1BFFh on-bard the controller for storing drive information and
  6183.       controller status; ES:BX points to the first byte available for other
  6184.       uses
  6185.     ES contains the segment at which the controller resides; the
  6186.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  6187. SeeAlso: AH=1Bh"SCSI"
  6188. --------d-131C0A-----------------------------
  6189. INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  6190.     AX = 1C0Ah
  6191.     DL = drive
  6192.     ES:BX -> buffer for device configuration (drive physical parameter)
  6193. Return: CF set on error
  6194.         AH = status
  6195. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  6196.       Adapter/A Technical Reference
  6197. --------d-131C0B-----------------------------
  6198. INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  6199.     AX = 1C0Bh
  6200.     ES:BX -> buffer for adapter configuration
  6201. Return: CF set on error
  6202.         AH = status
  6203. SeeAlso: AX=1C0Ch
  6204. --------d-131C0C-----------------------------
  6205. INT 13 - ESDI FIXED DISK - GET POS INFORMATION
  6206.     AX = 1C0Ch
  6207.     ES:BX -> POS information
  6208. Return: CF set on error
  6209.         AH = status
  6210. SeeAlso: AX=1C0Bh
  6211. --------d-131C0E-----------------------------
  6212. INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  6213.     AX = 1C0Eh
  6214.     CH = low 8 bits of cylinder number
  6215.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  6216.     DH = head number
  6217.     DL = drive number
  6218.     ES:BX -> ABA number
  6219. Return: CF set on error
  6220.         AH = status
  6221. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  6222.       Technical Reference by using its Device Configuration Status Block
  6223. --------c-131D-------------------------------
  6224. INT 13 - IBMCACHE.SYS - CACHE STATUS
  6225.     AH = 1Dh
  6226.     AL = subfunction
  6227.         01h get status record
  6228.         DL = drive???
  6229.         Return: ES:BX -> status record
  6230.             CF set on error
  6231.                 AH = error code
  6232.         02h set cache status
  6233.         ES:BX -> status record
  6234.         DL = drive???
  6235.         Return: CF set on error
  6236.  
  6237. Format of status record:
  6238. Offset    Size    Description
  6239.  00h    DWORD    total number of read requests
  6240.  04h    DWORD    total number of hits
  6241.  08h    DWORD    number of physical disk reads
  6242.  0Ch    DWORD    total number of sectors requested by physical disk reads
  6243.  10h  6 bytes    ???
  6244.  16h    DWORD    pointer to start of error list
  6245.  1Ah    DWORD    pointer to end of error list
  6246.  1Eh    WORD    ???
  6247.  20h    BYTE    using extended memory if nonzero
  6248.  21h    BYTE    ???
  6249.  22h  4 BYTEs    ASCII version number
  6250.  26h    WORD    cache size in KB
  6251.  28h    WORD    sectors per page
  6252.  
  6253. Format of error list:
  6254. Offset    Size    Description
  6255.  00h    DWORD    relative block address of bad page
  6256.  04h    BYTE    drive
  6257.  05h    BYTE    sector bit-map
  6258.  06h    WORD    next error
  6259. --------d-1320-------------------------------
  6260. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  6261.     AH = 20h
  6262.     ???
  6263. Return: ???
  6264. Note:    returns some kind of status related to whether the drive contains its
  6265.       default media type
  6266. --------c-1320-------------------------------
  6267. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  6268.     AH = 20h
  6269.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  6270.                    or FFh for all drives)
  6271. Return: AX = status (0000h successful)
  6272. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  6273.       Associates, Inc.
  6274. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  6275.       those sector buffers
  6276. SeeAlso: AH=21h,AH=22h,AH=28h
  6277. --------c-1321-------------------------------
  6278. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  6279.     AH = 21h
  6280. Return: AX = status (0000h successful)
  6281. Desc:    immediately write all dirty sectors back to disk
  6282. SeeAlso: AH=25h,AH=2Eh,AH=2Fh
  6283. --------c-1322-------------------------------
  6284. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  6285.     AH = 22h
  6286.     AL = new state (00h disabled, 01h enabled)
  6287. Return: AX = status (0000h successful)
  6288. Note:    enables/disables caching of all drives
  6289. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  6290. --------c-1323-------------------------------
  6291. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  6292.     AH = 23h
  6293. Return: AX = status (0000h successful)
  6294.     ES = segment of ??? data
  6295. --------c-1324-------------------------------
  6296. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  6297.     AH = 24h
  6298.     BX = new number of sector buffers in cache
  6299. Return: AX = status
  6300.         0000h successful
  6301.         0001h failed--size adjusted
  6302.         8000h cache cannot be resized while enabled
  6303. SeeAlso: AH=36h
  6304. --------c-1325-------------------------------
  6305. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  6306.     AH = 25h
  6307.     BX = interval
  6308. Return: AX = status (0000h successful)
  6309. Desc:    specify how often the cache should write dirty buffers to disk when
  6310.       buffered writes are enabled
  6311. SeeAlso: AH=21h,AH=2Ch,AH=2Eh
  6312. --------c-1326-------------------------------
  6313. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  6314.     AH = 26h
  6315. Return: AX = status
  6316.         0000h successful
  6317.         0001h-00FFh interrupt vector which was hooked by another TSR
  6318. SeeAlso: AH=27h
  6319. --------c-1327--BX0000-----------------------
  6320. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  6321.     AH = 27h
  6322.     BX = 0000h
  6323. Return: AX = 0000h if installed
  6324.     BX nonzero if installed
  6325.         BH = major version
  6326.         BL = binary minor version
  6327. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  6328.       Associates, Inc.
  6329. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  6330. --------c-1328-------------------------------
  6331. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  6332.     AH = 28h
  6333.     AL = new state (00h disabled, 01h enabled)
  6334. Return: AX = status (0000h successful)
  6335. SeeAlso: AH=20h"QUICKCACHE"
  6336. --------c-1329-------------------------------
  6337. INT 13 U - QUICKCACHE II v4.20 - NOP
  6338.     AH = 29h
  6339. Return: AX = 0000h
  6340. --------c-132A-------------------------------
  6341. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  6342.     AH = 2Ah
  6343.     AL = buffer size (1-30)
  6344. Return: AX = status (0000h successful)
  6345. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  6346.       and write operations
  6347. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  6348. --------c-132B-------------------------------
  6349. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  6350.     AH = 2Bh
  6351.     AL = new state (00h disabled, 01h enabled)
  6352. Return: AX = status (0000h successful)
  6353. --------c-132C-------------------------------
  6354. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  6355.     AH = 2Ch
  6356.     AL = new state (00h disabled, 01h enabled)
  6357. Return: AX = status (0000h successful)
  6358. Desc:    specify whether the cache should delay disk writes
  6359. Note:    this function enables or disables delayed writes for all drives; use
  6360.       AH=38h to change a single drive
  6361. SeeAlso: AH=25h,AH=2Dh,AH=2Eh,AH=38h
  6362. --------c-132D-------------------------------
  6363. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  6364.     AH = 2Dh
  6365.     AL = new state (00h disabled, 01h enabled)
  6366. Return: AX = status (0000h succesful)
  6367. Desc:    specify whether the cache should attempt to read ahead of actual
  6368.       requests
  6369. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  6370.       to change a single drive
  6371. SeeAlso: AH=2Ch,AH=37h
  6372. --------c-132E-------------------------------
  6373. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  6374.     AH = 2Eh
  6375.     BX = flush count
  6376. Return: AX = status (0000h successful)
  6377. Desc:    specify how many dirty sectors the cache should write after each flush
  6378.       interval (see AH=25h) when buffered writes are enabled
  6379. SeeAlso: AH=21h,AH=25h,AH=2Ch
  6380. --------c-132F-------------------------------
  6381. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  6382.     AH = 2Fh
  6383. Return: AX = status (0000h successful)
  6384. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  6385.       flush interval had expired
  6386. SeeAlso: AH=21h
  6387. --------c-1330-------------------------------
  6388. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  6389.     AH = 30h
  6390.     AL = what to get
  6391.         00h system info (see below)
  6392.         01h drive info (see below)
  6393.         02h access frequency (array of 30 words)
  6394.         03h drive index
  6395.         (array of 32 bytes indicating BIOS drive for DOS drive)
  6396.     DS:DX -> buffer for info
  6397. Return: AX = status (0000h successful, 8000h invalid info specifier)
  6398. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  6399.       Associates, Inc.
  6400.  
  6401. Format of system info:
  6402. Offset    Size    Description
  6403.  00h    BYTE    flag: cache enabled
  6404.  01h    BYTE    flag: buffered writes enabled
  6405.  02h    BYTE    flag: buffered reads enabled
  6406.  03h    BYTE    flag: sounds enabled
  6407.  04h    BYTE    flag: autodismount enabled
  6408.  05h    BYTE    ???
  6409.  06h    BYTE    flag: ???
  6410.  07h    BYTE    flag: ???
  6411.  08h    BYTE    flag: "em_assigned"
  6412.  09h    BYTE    flag: emulated EMS
  6413.  0Ah    BYTE    single sector bonus
  6414.  0Bh    BYTE    "sticky_max"
  6415.  0Ch    BYTE    write sector bonus
  6416.  0Dh    BYTE    bonus threshold
  6417.  0Eh    WORD    flush interval
  6418.  10h    WORD    flush count
  6419.  12h    WORD    reserve pool size
  6420.  14h    WORD    remaining space in reserve pool
  6421.  16h    WORD    required free memory
  6422.  18h    WORD    total cache sectors
  6423.  1Ah    WORD    dirty cache sectors
  6424.  1Ch    BYTE    trace buffer size
  6425.  1Dh    BYTE    reserved (padding)
  6426.  
  6427. Format of drive info [16-element array, one element]:
  6428. Offset    Size    Description
  6429.  00h    BYTE    DOS drive number
  6430.  01h    BYTE    BIOS drive number
  6431.  02h    BYTE    maximum sector number
  6432.  03h    BYTE    maximum head number
  6433.  04h    BYTE    read buffer size
  6434.  05h    BYTE    write buffer size
  6435.  06h    BYTE    last status
  6436.  07h    BYTE    flag: enabled
  6437.  08h    BYTE    flag: buffered write enabled
  6438.  09h    BYTE    flag: buffered read enabled
  6439.  0Ah    BYTE    flag: in use (drive info is valid)
  6440.  0Bh    BYTE    flag: cylinder flush
  6441.  0Ch    BYTE    reserved (padding)
  6442.  0Dh    BYTE    sectors per track
  6443.  0Eh    WORD    sector size
  6444.  10h    WORD    sectors assigned
  6445.  12h    WORD    dirty sectors
  6446.  14h    WORD    reserved sectors
  6447.  16h    WORD    number of read errors
  6448.  18h    WORD    number of write errors
  6449.  1Ah    DWORD    "rio_count"
  6450.  1Eh    DWORD    number of cache misses
  6451.  22h    DWORD    "wio_count"
  6452.  26h    DWORD    "dio_count"
  6453. --------c-1331-------------------------------
  6454. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  6455.     AH = 31h
  6456.     BX = number of paragraphs of conventional memory to reserve for apps
  6457. Return: AX = status (0000h successful)
  6458. --------c-1332-------------------------------
  6459. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  6460.     AH = 32h
  6461.     AL = drive number (00h=A:)
  6462. Return: AX = status (0000h successful)
  6463. SeeAlso: AH=22h,AH=33h
  6464. --------c-1333-------------------------------
  6465. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  6466.     AH = 33h
  6467.     AL = drive number (00h=A:)
  6468. Return: AX = status (0000h successful)
  6469. SeeAlso: AH=22h,AH=32h
  6470. --------c-1334-------------------------------
  6471. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  6472.     AH = 34h
  6473.     AL = function
  6474.         00h end sector locking/unlocking
  6475.         01h lock all accessed sectors into cache
  6476.         02h unlock all accessed sectors and discard from cache
  6477. Return: AX = status (0000h successful)
  6478. SeeAlso: AH=20h,AH=35h
  6479. --------c-1335-------------------------------
  6480. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  6481.     AH = 35h
  6482.     BX = number of sectors in lock pool
  6483. Return: AX = status (0000h successful)
  6484. Desc:    specify the number of cache sector buffers which may be dedicated to
  6485.       data locked into the cache
  6486. SeeAlso: AH=34h
  6487. --------c-1336-------------------------------
  6488. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  6489.     AH = 36h
  6490.     AL = new size of trace buffer
  6491. Return: AX = status (0000h successful)
  6492. Note:    called with AL=05h during an INT 13/AH=24h call
  6493. SeeAlso: AH=24h
  6494. --------c-1337-------------------------------
  6495. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  6496.     AH = 37h
  6497.     AL = new state (00h disabled, else enabled)
  6498.     DL = drive number (00h = A:)
  6499. Return: AX = status (0000h successful)
  6500. SeeAlso: AH=2Dh,AH=38h
  6501. --------c-1338-------------------------------
  6502. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  6503.     AH = 38h
  6504.     AL = new state (00h disabled, else enabled)
  6505.     DL = drive number (00h = A:)
  6506. Return: AX = status (0000h successful)
  6507. SeeAlso: AH=2Ch,AH=37h
  6508. --------c-1339-------------------------------
  6509. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  6510.     AH = 39h
  6511.     AL = new size of read buffer
  6512.     DL = drive number (00h = A:)
  6513. Return: AX = status (0000h successful)
  6514. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  6515.       Associates, Inc.
  6516. SeeAlso: AH=2Ah,AH=3Ah
  6517. --------c-133A-------------------------------
  6518. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  6519.     AH = 3Ah
  6520.     AL = new size of write buffer
  6521.     DL = drive number (00h = A:)
  6522. Return: AX = status (0000h successful)
  6523. SeeAlso: AH=2Ah,AH=39h
  6524. --------c-133B-------------------------------
  6525. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  6526.     AH = 3Bh
  6527.     AL = new state of ??? (01h enabled, else disabled)
  6528. Return: AX = status (0000h successful)
  6529. Note:    is affected by the flag reported at offset 05h of the system info
  6530.       returned by AH=30h, and sets the flag at offset 06h
  6531. SeeAlso: AH=3Ch
  6532. --------c-133C-------------------------------
  6533. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  6534.     AH = 3Ch
  6535.     AL = new state of ??? (01h enabled, else disabled)
  6536. Return: AX = status (0000h successful)
  6537. Note:    is affected by the flag reported at offset 05h of the system info
  6538.       returned by AH=30h, and sets the flag at offset 07h
  6539. SeeAlso: AH=3Bh
  6540. --------c-133D-------------------------------
  6541. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  6542.     AH = 3Dh
  6543.     AL = new state (01h enabled, else disabled)
  6544.     DL = drive number (00h = A:)
  6545. Return: AX = status (0000h successful)
  6546. --------c-133E-------------------------------
  6547. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  6548.     AH = 3Eh
  6549.     AL = new value for bonus
  6550. Return: AX = status (0000h successful)
  6551. Desc:    specify the bonus score to give to single-sector transfers in order to
  6552.       keep those sectors in the cache longer
  6553. --------c-133F-------------------------------
  6554. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  6555.     AH = 3Fh
  6556.     AL = new value for bonus threshold
  6557. Return: AX = status (0000h successful)
  6558. --------c-1340-------------------------------
  6559. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  6560.     AH = 40h
  6561.     AL = new value for "sticky_max"
  6562. Return: AX = status (0000h successful)
  6563. --------c-1341-------------------------------
  6564. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  6565.     AH = 41h
  6566.     AL = direction
  6567.         01h save to file
  6568.         else restore from file
  6569.     ES:DI -> 1024-byte buffer for ???
  6570. Return: AX = status (0000h successful, 8000h failed)
  6571. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  6572.       Associates, Inc.
  6573. --------N-134257DX1234-----------------------
  6574. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  6575.     AX = 4257h ("BW")
  6576.     DX = 1234h
  6577. Return: BX = 414Ch if installed
  6578. Program: BWLPD is the printer daemon from the BW-NFS package
  6579. SeeAlso: INT 62"BW-TCP"
  6580. --------v-135342CX0001-----------------------
  6581. INT 13 - ScanBoot - INSTALLATION CHECK
  6582.     AX = 5342h ("SB")
  6583.     CX = 0001h
  6584.     DX = 0000h
  6585. Return: CF clear if ScanBoot installed
  6586.        AX = 0000h
  6587.        CX = serial number ("SW" if shareware release)
  6588.        DX = version
  6589.        BX,SI,ES destroyed
  6590. Program: ScanBoot is a virus-detection TSR by PanSoft
  6591. --------d-135504-----------------------------
  6592. INT 13 - Seagate - GET CONTROLLER TYPE???
  6593.     AX = 5504h
  6594.     DX = drive (bit 7 set for hard disk)
  6595. Return: CF clear if successful
  6596.         AX = 4321h,4322h if Seagate controller
  6597.     CF set on error
  6598. SeeAlso: AX=5505h,AX=5514h
  6599. --------d-135505-----------------------------
  6600. INT 13 - Seagate - PARK HEADS???
  6601.     AX = 5505h
  6602.     DX = drive (bit 7 set for hard disk)
  6603. Return: CF clear if successful
  6604.     CF set on error
  6605. SeeAlso: AX=5504h,AX=5515h
  6606. --------d-135514-----------------------------
  6607. INT 13 - Seagate - ???
  6608.     AX = 5514h
  6609.     DX = drive (bit 7 set for hard disk)
  6610. Return: CF clear if successful
  6611.     CF set on error
  6612.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  6613. SeeAlso: AX=5504h,AX=5515h
  6614. --------d-135515-----------------------------
  6615. INT 13 - Seagate - PARK HEADS???
  6616.     AX = 5515h
  6617.     DX = drive (bit 7 set for hard disk)
  6618. Return: CF clear if successful
  6619.     CF set on error
  6620. Note:    appears to be identical to AX=5505h
  6621. SeeAlso: AX=5504h,AX=5505h
  6622. --------d-1370-------------------------------
  6623. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  6624.     AH = 70h
  6625.     ???
  6626. Return: ???
  6627. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  6628.       formatting program) make this call, presumably to EDVR.SYS (the
  6629.       partitioning driver)
  6630. SeeAlso: AH=ADh
  6631. ----------1375-------------------------------
  6632. INT 13 - ???
  6633.     AH = 75h
  6634.     ???
  6635. Return: AH = ???
  6636.     ???
  6637. Note:    intercepted by PC-Cache (v5.1 only)
  6638. ----------1376-------------------------------
  6639. INT 13 - ???
  6640.     AH = 76h
  6641.     ???
  6642. Return: AH = ???
  6643.     ???
  6644. Note:    intercepted by PC-Cache (v5.1 only)
  6645. --------c-137B00-----------------------------
  6646. INT 13 - NOW! v3.05 - GET INFORMATION
  6647.     AX = 7B00h
  6648.     CX:DX -> 1F8h-byte buffer for information record (see below)
  6649. Return: AX = 0000h
  6650.     BX = segment of main resident code
  6651.     ES = ???
  6652. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  6653. SeeAlso: AX=7B02h,AH=EFh
  6654.  
  6655. Format of information record:
  6656. Offset    Size    Description
  6657.  00h 80 BYTEs    name of directory from which NOW! was started
  6658.  50h 424 BYTEs    ???
  6659.  81h  ? BYTEs    array of bytes for ???
  6660.  F7h 250 BYTEs    array of 25 entries, one per drive???
  6661.     Offset    Size    Description
  6662.      00h  2 BYTEs    ???
  6663.      02h    WORD    ???
  6664.      04h    WORD    ???
  6665.      06h  4 BYTEs    ???
  6666. 1F1h  7 BYTEs    ???
  6667. --------c-137B01-----------------------------
  6668. INT 13 - NOW! v3.05 - ???
  6669.     AX = 7B01h
  6670. Return: DX = segment of ???
  6671. SeeAlso: AX=7B00h
  6672. --------c-137B02-----------------------------
  6673. INT 13 - NOW! v3.05 - SET INFORMATION
  6674.     AX = 7B02h
  6675.     BX = segment of ??? (10h above a PSP)
  6676.     CX:DX -> 1F8h-byte information record (see AX=7B00h)
  6677. Return: ???
  6678. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  6679. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  6680.       BX
  6681. SeeAlso: AX=7B00h
  6682. --------c-137B03-----------------------------
  6683. INT 13 - NOW! v3.05 - ???
  6684.     AX = 7B03h
  6685.     ???
  6686. Return: ???
  6687. SeeAlso: AX=7B00h,AX=7B04h
  6688. --------c-137B04-----------------------------
  6689. INT 13 - NOW! v3.05 - ???
  6690.     AX = 7B04h
  6691.     ???
  6692. Return: ???
  6693. SeeAlso: AX=7B03h
  6694. --------c-137B05-----------------------------
  6695. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  6696.     AX = 7B05h
  6697. Return: BX:AX = number of physical accesses???
  6698.     DX:CX = total disk accesses???
  6699. SeeAlso: AX=7B00h,AX=7B06h
  6700. --------c-137B06-----------------------------
  6701. INT 13 - NOW! v3.05 - GET ???
  6702.     AX = 7B06h
  6703.     BX = ???
  6704. Return: AX = 0000h
  6705.     BX = ???
  6706. SeeAlso: AX=7B05h,AX=7B07h
  6707. --------c-137B07-----------------------------
  6708. INT 13 - NOW! v3.05 - GET ???
  6709.     AX = 7B07h
  6710. Return: AX = ???
  6711.     BX = ???
  6712.     CX = ???
  6713.     DX = ???
  6714. SeeAlso: AX=7B06h
  6715. --------c-137B08-----------------------------
  6716. INT 13 - NOW! v3.05 - ???
  6717.     AX = 7B08h
  6718.     CX = ??? (default 00h)
  6719. Return: ???
  6720. SeeAlso: AX=7B00h
  6721. --------c-1380--CX6572-----------------------
  6722. INT 13 - FAST! v4.02+ - API
  6723.     AH = 80h
  6724.     CX = 6572h
  6725.     DX = 1970h
  6726.     ES:BX -> request packet (see below)
  6727.     AL = function
  6728.         01h get cache information (see separate entry)
  6729.         04h disable cache
  6730.         05h enable cache and reset statistics
  6731.         06h installation check (see separate entry)
  6732.         07h unhook interrupts (see separate entry)
  6733.         09h flush cache
  6734.         0Ah (v4.02+) enable staged writes
  6735.         0Bh (v4.02+) disable staged writes
  6736.         0Ch (v4.02+) enable beep on flush
  6737.         0Dh (v4.02+) disable beep on flush
  6738.         0Eh ???
  6739.         0Fh ???
  6740.         10h (v4.12+) enable hotkeys
  6741.         11h (v4.12+) disable hotkeys
  6742.         12h (v4.13+) set idle delay
  6743.         13h (v4.13+) set flush dirty percentage
  6744.         14h (v5.00+) enable mouse checks
  6745.         15h (v5.00+) disable mouse checks
  6746.         16h (v5.00d+) reduce cache size to minimum
  6747.         17h (v5.00d+) increase cache size to maximum
  6748. Return: AH = status (except function 06h)
  6749.         00h if successful
  6750.         01h invalid function
  6751.         05h not supported by the installed variant
  6752.     CF clear if successful
  6753.     CF set on error
  6754.     AL may be destroyed
  6755. Program: FAST! is a disk cache by Future Computing Systems and marketed by BLOC
  6756.       Publishing Corp.
  6757. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  6758. Index:    hotkeys;FAST!
  6759.  
  6760. Format of request packet:
  6761. Offset    Size    Description
  6762.  00h    DWORD    pointer to 19-byte signature string (see below)
  6763.  04h    DWORD    pointer to buffer for data (if needed by function)
  6764.  
  6765. Values for v4.04-v5.03 signature string:
  6766.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  6767. --------c-138001CX6572-----------------------
  6768. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  6769.     AX = 8001h
  6770.     CX = 6572h
  6771.     DX = 1970h
  6772.     ES:BX -> request packet (see below)
  6773. Return: AH = 00h if successful
  6774. SeeAlso: AH=80h,AX=8006h
  6775.  
  6776. Format of request packet:
  6777. Offset    Size    Description
  6778.  00h    DWORD    -> 19-byte signature string (see AH=80h)
  6779.  04h    DWORD    -> buffer for cache information (see below)
  6780.  
  6781. Format of cache information (v5.00-5.03):
  6782. Offset    Size    Description
  6783.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  6784.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  6785.  03h    BYTE    FAST! variant
  6786.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  6787.  04h    DWORD    total number of read requests
  6788.  08h    DWORD    number of physical disk reads
  6789.  0Ch    DWORD    grabbed hash buckets
  6790.  10h    DWORD    "st_386mem"
  6791.  14h    DWORD    total number of writes (only counted when staging enabled)
  6792.  18h    DWORD    number of physical disk writes (only when staging enabled)
  6793.  1Ch    DWORD    number of write errors while flushing cache
  6794.  20h    WORD    flags
  6795.         bit 0: beep on flush
  6796.         bit 3: hotkeys enabled
  6797.         bit 4: mouse idle check enabled
  6798.         bit 8: caching enabled
  6799.         bit 13: ???
  6800.  22h    WORD    flags
  6801.         bit 0: ???
  6802.         bit 1: staged writes enabled
  6803.  24h    WORD    ???
  6804.  26h    WORD    maximum cache size in KB
  6805.  28h    WORD    minimum cache size in KB
  6806.  2Ah    WORD    segment of first cache buffer (FASTC)
  6807.         segment of EMS page frame (FASTE)
  6808.         XMS handle (FASTX XMS)
  6809.  2Ch    WORD    number of hash buckets containing no entries
  6810.  2Eh    WORD    number of hash buckets containing one entry
  6811.  30h    WORD    number of hash buckets containing two entries
  6812.  32h    WORD    number of hash buckets containing three entries
  6813.  34h    WORD    number of hash buckets containing four entries
  6814.  36h    WORD    number of hash buckets containing five entries
  6815.  38h    WORD    maximum contiguous sectors
  6816.  3Ah    WORD    hash factor
  6817.  3Ch    WORD    number of paragraphs of memory used below 1M
  6818.  3Eh    WORD    entries per hash bucket
  6819.  40h    WORD    idle delay in seconds
  6820.  42h  2 BYTEs    ???
  6821.  44h    WORD    staged write threshold percentage
  6822.  46h  2 BYTEs    ???
  6823.  48h    WORD    number of dirty sectors
  6824.  4Ah    WORD    number of staged write buffers
  6825.  4Ch    WORD    current cache size in KB
  6826.  4Eh    WORD    beep frequency in Hz
  6827.  50h    WORD    ???
  6828.  52h    WORD    ???
  6829. --------c-138006CX6572-----------------------
  6830. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  6831.     AX = 8006h
  6832.     CX = 6572h
  6833.     DX = 1970h
  6834.     ES:BX -> request packet (see below)
  6835. Return: AX = 1965h if installed
  6836. SeeAlso: AH=80h,AX=8001h,AX=8007h
  6837.  
  6838. Format of request packet:
  6839. Offset    Size    Description
  6840.  00h    DWORD    -> 19-byte signature string (see AH=80h)
  6841. --------c-138007CX6572-----------------------
  6842. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  6843.     AX = 8007h
  6844.     CX = 6572h
  6845.     DX = 1970h
  6846.     ES:BX -> request packet (see below)
  6847. Return: AX = 1965h if installed
  6848. SeeAlso: AH=80h,AX=8006h
  6849. Index:    uninstall;FAST!
  6850.  
  6851. Format of request packet:
  6852. Offset    Size    Description
  6853.  00h    DWORD    -> 19-byte signature string (see AH=80h)
  6854. --------c-1381--SI4358-----------------------
  6855. INT 13 - Super PC-Kwik v3.20+ - ???
  6856.     AH = 81h
  6857.     SI = 4358h
  6858.     ???
  6859. Return: ???
  6860. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  6861.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  6862.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  6863.     returns immediately in PC-Cache v5.x
  6864. Index:    PC-Cache|Qualitas Qcache
  6865. --------c-1382--SI4358-----------------------
  6866. INT 13 - Super PC-Kwik v3.20+ - ???
  6867.     AH = 82h
  6868.     SI = 4358h
  6869.     ???
  6870. Return: AL = ???
  6871. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  6872.       Super PC-Kwik, and thus support this call
  6873. SeeAlso: AH=84h
  6874. Index:    PC-Cache|Qualitas Qcache
  6875. --------c-1383--SI4358-----------------------
  6876. INT 13 - Super PC-Kwik v3.20+ - ???
  6877.     AH = 83h
  6878.     SI = 4358h
  6879.     AL = ???
  6880.     ES:BX -> ???
  6881.     ???
  6882. Return: ???
  6883. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  6884.       Super PC-Kwik, and thus support this call
  6885. SeeAlso: AH=85h
  6886. Index:    PC-Cache|Qualitas Qcache
  6887. --------c-1384--SI4358-----------------------
  6888. INT 13 - Super PC-Kwik v3.20+ - ???
  6889.     AH = 84h
  6890.     SI = 4358h
  6891.     AL = ???
  6892.     ???
  6893. Return: AL = ???
  6894. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  6895.       Super PC-Kwik, and thus support this call
  6896. SeeAlso: AH=82h
  6897. Index:    PC-Cache|Qualitas Qcache
  6898. --------c-1385--SI4358-----------------------
  6899. INT 13 - Super PC-Kwik v3.20+ - ???
  6900.     AH = 85h
  6901.     SI = 4358h
  6902.     AL = ???
  6903.     DL = ???
  6904.     ???
  6905. Return: ???
  6906. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  6907.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  6908.       to PC-Kwik v3.20)
  6909. SeeAlso: AH=83h
  6910. Index:    PC-Cache|Qualitas Qcache
  6911. --------c-1386--SI4358-----------------------
  6912. INT 13 - Super PC-Kwik v4.00+ - ???
  6913.     AH = 86h
  6914.     SI = 4358h
  6915.     ???
  6916. Return: ???
  6917. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  6918.       thus supports this call
  6919. Index:    Qualitas Qcache
  6920. --------c-1387--SI4358-----------------------
  6921. INT 13 - Super PC-Kwik v4.00+ - ???
  6922.     AH = 87h
  6923.     SI = 4358h
  6924.     ???
  6925. Return: AH = status??? (00h)
  6926.     CX = ???
  6927.     DX = ??? (0000h)
  6928. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  6929.       thus supports this call
  6930. Index:    Qualitas Qcache
  6931. --------c-1388--SI4358-----------------------
  6932. INT 13 - Super PC-Kwik v4.00+ - ???
  6933.     AH = 88h
  6934.     SI = 4358h
  6935.     ???
  6936. Return: AH = status??? (00h)
  6937.     CX = ???
  6938.     DX = ??? (0000h)
  6939. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  6940.       thus supports this call
  6941. Index:    Qualitas Qcache
  6942. --------c-1389--SI4358-----------------------
  6943. INT 13 - Super PC-Kwik v5.10+ - ???
  6944.     AH = 89h
  6945.     SI = 4358h
  6946.     ???
  6947. Return: ???
  6948. --------c-138A--SI4358-----------------------
  6949. INT 13 - Super PC-Kwik v5.10+ - ???
  6950.     AH = 8Ah
  6951.     SI = 4358h
  6952.     ???
  6953. Return: ???
  6954. --------c-138EED-----------------------------
  6955. INT 13 - HyperDisk v4.01+ - ???
  6956.     AX = 8EEDh
  6957.     ???
  6958. Return: ???
  6959. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  6960. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  6961. --------c-138EEE-----------------------------
  6962. INT 13 - HyperDisk v4.01+ - ???
  6963.     AX = 8EEEh
  6964. Return: CF set
  6965.     AX = CS of HyperDisk resident code
  6966.     ???
  6967. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  6968. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  6969. --------c-138EEF-----------------------------
  6970. INT 13 - HyperDisk v4.01+ - ???
  6971.     AX = 8EEFh
  6972. Return: CF set
  6973.     AX = CS of HyperDisk resident code
  6974.     ???
  6975. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  6976. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  6977. --------c-1392--SI4358-----------------------
  6978. INT 13 - Super PC-Kwik v5.10+ - ???
  6979.     AH = 92h
  6980.     SI = 4358h
  6981.     ???
  6982. Return: AH = status??? (00h)
  6983.     DL = ???
  6984. SeeAlso: AH=93h
  6985. --------c-1393--SI4358-----------------------
  6986. INT 13 - Super PC-Kwik v5.10+ - ???
  6987.     AH = 93h
  6988.     SI = 4358h
  6989.     ???
  6990. Return: AH = status??? (00h)
  6991.     AL = ???
  6992. SeeAlso: AH=92h
  6993. --------c-1394--SI4358-----------------------
  6994. INT 13 - Super PC-Kwik v5.10+ - ???
  6995.     AH = 94h
  6996.     SI = 4358h
  6997.     ???
  6998. Return: ???
  6999. --------c-1395--SI4358-----------------------
  7000. INT 13 - Super PC-Kwik v5.10+ - ???
  7001.     AH = 95h
  7002.     SI = 4358h
  7003.     ???
  7004. Return: AH = status??? (00h)
  7005.     DX = ???
  7006. --------c-1396--SI4358-----------------------
  7007. INT 13 - Super PC-Kwik v5.10+ - ???
  7008.     AH = 96h
  7009.     SI = 4358h
  7010.     AL = ??? (01h)
  7011.     BX = ??? (0790h)
  7012.     DL = ???
  7013. Return: AH = status??? (00h)
  7014.     DX = ???
  7015. --------c-1397--SI4358-----------------------
  7016. INT 13 - Super PC-Kwik v5.10+ - ???
  7017.     AH = 97h
  7018.     SI = 4358h
  7019.     ???
  7020. Return: ???
  7021. --------c-1398--SI4358-----------------------
  7022. INT 13 - Super PC-Kwik v5.10+ - ???
  7023.     AH = 98h
  7024.     SI = 4358h
  7025.     ???
  7026. Return: ???
  7027. --------c-1399--SI4358-----------------------
  7028. INT 13 - Super PC-Kwik v5.10+ - ???
  7029.     AH = 99h
  7030.     SI = 4358h
  7031.     ???
  7032. Return: ???
  7033. --------c-139A--SI4358-----------------------
  7034. INT 13 - Super PC-Kwik v5.10+ - ???
  7035.     AH = 9Ah
  7036.     SI = 4358h
  7037.     ???
  7038. Return: ???
  7039. --------c-139B--SI4358-----------------------
  7040. INT 13 - Super PC-Kwik v5.10+ - ???
  7041.     AH = 9Bh
  7042.     SI = 4358h
  7043.     ???
  7044. Return: ???
  7045. --------c-139C--SI4358-----------------------
  7046. INT 13 - Super PC-Kwik v5.10+ - ???
  7047.     AH = 9Ch
  7048.     SI = 4358h
  7049.     ???
  7050. Return: ???
  7051. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  7052.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  7053.       if a previous call is still in progress
  7054. --------c-139D--SI4358-----------------------
  7055. INT 13 - Super PC-Kwik v5.10+ - ???
  7056.     AH = 9Dh
  7057.     SI = 4358h
  7058.     ???
  7059. Return: ???
  7060. --------c-13A0--SI4358-----------------------
  7061. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  7062.     AH = A0h
  7063.     SI = 4358h
  7064. Return: AX = segment of resident code
  7065. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  7066.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  7067.       corresponds to PC-Kwik v3.27)
  7068. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  7069. Index:    PC-Cache|Qualitas Qcache
  7070. --------c-13A1--SI4358-----------------------
  7071. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  7072.     AH = A1h
  7073.     SI = 4358h
  7074. Return: CF clear
  7075.     AH = 00h (v5.10)
  7076. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  7077.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  7078.       corresponds to PC-Kwik v3.20)
  7079. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  7080. Index:    PC-Cache|Qualitas Qcache
  7081. --------c-13A2--SI4358-----------------------
  7082. INT 13 - Super PC-Kwik v3.20+ - ???
  7083.     AH = A2h
  7084.     SI = 4358h
  7085.     ???
  7086. Return: ???
  7087. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  7088.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  7089.       corresponds to PC-Kwik v3.20)
  7090. Index:    PC-Cache|Qualitas Qcache
  7091. --------c-13A3--SI4358-----------------------
  7092. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  7093.     AH = A3h
  7094.     SI = 4358h
  7095. Return: CF clear
  7096. SeeAlso: AH=A4h
  7097. --------c-13A4--SI4358-----------------------
  7098. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  7099.     AH = A4h
  7100.     SI = 4358h
  7101. Return: CF clear
  7102. SeeAlso: AH=A3h
  7103. --------c-13A5--SI4358-----------------------
  7104. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  7105.     AH = A5h
  7106.     SI = 4358h
  7107. Return: AX = ???
  7108.     SI = ???
  7109. Notes:    called and used internally by Super PC-Kwik when a program terminates
  7110.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  7111.     this call is not supported by Qualitas Qcache 4.00
  7112. Index:    PC-Cache
  7113. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  7114. --------c-13A6--SI4358-----------------------
  7115. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  7116.     AH = A6h
  7117.     SI = 4358h
  7118.     DS:DX -> ASCIZ program name
  7119.     ES:BX -> EXEC data block (see INT 21/AH=4Bh)
  7120. Return: ???
  7121. Note:    called and used internally by Super PC-Kwik when a program is loaded
  7122.       with INT 21/AX=4B00h
  7123. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  7124. --------c-13A7--SI4358-----------------------
  7125. INT 13 CU - Super PC-Kwik 5.1 - ???
  7126.     AH = A7h
  7127.     SI = 4358h
  7128. Return: ???
  7129. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  7130. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  7131. --------c-13A8--SI4358-----------------------
  7132. INT 13 CU - Super PC-Kwik 5.1 - ???
  7133.     AH = A8h
  7134.     SI = 4358h
  7135. Return: ???
  7136. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  7137. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  7138. --------c-13A9--SI4358-----------------------
  7139. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  7140.     AH = A9h
  7141.     SI = 4358h
  7142. Return: ???
  7143. Note:    called and used internally by Super PC-Kwik when an application issues
  7144.       INT 21/AH=4Dh
  7145. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  7146. --------c-13AA--SI4358-----------------------
  7147. INT 13 - Super PC-Kwik v4+ - ???
  7148.     AH = AAh
  7149.     SI = 4358h
  7150.     ???
  7151. Return: ???
  7152. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  7153.       this call
  7154. --------c-13AB--SI4358-----------------------
  7155. INT 13 - Super PC-Kwik v4+ - ???
  7156.     AH = ABh
  7157.     SI = 4358h
  7158.     ???
  7159. Return: ???
  7160. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  7161.       this call
  7162. --------c-13AC--SI4358-----------------------
  7163. INT 13 - Super PC-Kwik v4+ - ???
  7164.     AH = ACh
  7165.     SI = 4358h
  7166.     ???
  7167. Return: ???
  7168. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  7169.       this call
  7170. --------d-13AD-------------------------------
  7171. INT 13 - Priam HARD DISK CONTROLLER???
  7172.     AH = ADh
  7173.     ???
  7174. Return: ???
  7175. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  7176.       to check the ROM type on the controller for their hard disk kits
  7177. SeeAlso: AH=70h
  7178. --------c-13AD--SI4358-----------------------
  7179. INT 13 - Super PC-Kwik v4+ - ???
  7180.     AH = ADh
  7181.     SI = 4358h
  7182.     ???
  7183. Return: ???
  7184. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  7185.       this call
  7186. --------c-13AE--SI4358-----------------------
  7187. INT 13 - Super PC-Kwik v5.10+ - ???
  7188.     AH = AEh
  7189.     SI = 4358h
  7190.     ???
  7191. Return: ???
  7192. --------c-13B0--SI4358-----------------------
  7193. INT 13 - Super PC-Kwik v3.20+ - ???
  7194.     AH = B0h
  7195.     SI = 4358h
  7196.     ???
  7197. Return: ???
  7198. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  7199.       supports this call; Qualitas Qcache does not support it
  7200. Index:    PC-Cache
  7201. --------d-13EE-------------------------------
  7202. INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
  7203.     AH = EEh
  7204.     DL = drive number (80h, 81h)
  7205. Return: CF clear
  7206.        AH = 00h
  7207. Program: SWBIOS is a TSR by Ontrack Computer Systems
  7208. Notes:    the following INT 13 call will interpret the cylinder number as 1024
  7209.       less than the desired cylinder
  7210.     flag cleared by all INT 13 calls except AH=EEh
  7211.     Disk Manager also supports these calls
  7212.     also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to
  7213.       allow caching of drives using SWBIOS to access more than 1024
  7214.       cylinders
  7215. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  7216. Index:    PC-Cache;huge disks|Disk Manager
  7217. --------c-13EF-------------------------------
  7218. INT 13 - NOW! - ???
  7219.     AH = EFh
  7220.     CX = ???
  7221.     DL = ???
  7222.     ???
  7223. Return: ???
  7224. SeeAlso: AX=7B00h
  7225. --------d-13F9-------------------------------
  7226. INT 13 - SWBIOS - INSTALLATION CHECK
  7227.     AH = F9h
  7228.     DL = drive number (80h,81h)
  7229. Return: CF clear
  7230.         DX = configuration word
  7231.         bit 15 set if other SWBIOS extensions available
  7232.     CF set on error
  7233. Program: SWBIOS is a TSR by Ontrack Computer Systems
  7234. Note:    Disk Manager also supports these calls
  7235. SeeAlso: AH=EEh
  7236. Index:    Disk Manager
  7237. --------v-13FA--DX5945-----------------------
  7238. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  7239.     AH = FAh
  7240.     DX = 5945h
  7241.     AL = function (00h-07h)
  7242. Return: varies by function
  7243. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  7244.       so it is listed in its entirety under INT 16/AX=FA00h and following
  7245. SeeAlso: INT 16/AX=FA00h
  7246. --------d-13FE-------------------------------
  7247. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  7248.     AH = FEh
  7249.     DL = drive number (80h, 81h)
  7250. Return: CF clear
  7251.     DX = number of cylinders beyond 1024 on drive
  7252. Program: SWBIOS is a TSR by Ontrack Computer Systems
  7253. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  7254.     BIOS without this extension would return count modulo 1024
  7255.     Disk Manager also supports these calls
  7256. SeeAlso: AH=EEh
  7257. --------S-14---------------------------------
  7258. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  7259. Note:    the installation check for this driver is to determine whether the
  7260.       "~DOSXAM~" character device exists
  7261. Index:    installation check;Digiboard DigiCHANNEL
  7262. --------S-1400-------------------------------
  7263. INT 14 - SERIAL - INITIALIZE PORT
  7264.     AH = 00h
  7265.     AL = port parameters
  7266.         bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
  7267.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  7268.         bit 2    stop bits (set = 2, clear = 1)
  7269.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  7270.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  7271. Return: AH = line status (see AH=03h)
  7272.         FFh if error on Digiboard XAPCM232.SYS
  7273.     AL = modem status (see AH=03h)
  7274. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  7275.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  7276.       bps will result in 4800 bps
  7277.     various network and serial-port drivers support the standard BIOS
  7278.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  7279. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AX=8000h"ARTICOM"
  7280. SeeAlso: AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  7281. --------S-1400-------------------------------
  7282. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  7283.     AH = 00h
  7284.     AL = initializing parameters
  7285.         7 - 6 - 5       4 - 3     2      1 - 0
  7286.         -BAUD RATE-       PARITY   STOP   WORD
  7287.                     BITS  LENGTH
  7288.         000 19200 bd   00 none  0: 1  00: 5
  7289.         001 38400 bd   01 odd   1: 2  01: 6
  7290.         010      300 bd   11 even      10: 7
  7291.         011      600 bd          11: 8
  7292.         100     1200 bd
  7293.         101     2400 bd
  7294.         110     4800 bd
  7295.         111     9600 bd (4800 on PCjr)
  7296.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  7297. Return: AH = RS-232 status code bits
  7298.         bit 0: RDA - input data is available in buffer
  7299.         bit 1: OVRN - data has been lost
  7300.         bit 5: THRE - room is available in output buffer
  7301.         bit 6: TSRE - output buffer empty
  7302.     AL = modem status bits
  7303.         bit 3: always 1
  7304.         bit 7: DCD - carrier detect
  7305. SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  7306. --------S-1400-------------------------------
  7307. INT 14 - MBBIOS - INITIALIZE PORT
  7308.     AH = 00h
  7309.     AL = port parameters
  7310.         bits 7-5 data rate
  7311.             (normally 110,150,300,600,1200,2400,4800,9600 bps;
  7312.             9600,14400,19200,28800,38400,57600,115200,330400 bps
  7313.             if the high-speed option is set)
  7314.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  7315.         bit 2    stop bits (set = 2, clear = 1)
  7316.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  7317.     DX = port number
  7318. Return: AH = line status (see AH=03h)
  7319.     AL = modem status (see AH=03h)
  7320. Note:    MBBIOS was written by H. Roy Engehausen
  7321. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS"
  7322. --------S-1401-------------------------------
  7323. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  7324.     AH = 01h
  7325.     AL = character to write
  7326.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  7327. Return: AH bit 7 clear if successful
  7328.     AH bit 7 set on error
  7329.     AH bits 6-0 = port status (see AH=03h)
  7330. Note:    various network and serial-port drivers support the standard BIOS
  7331.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  7332. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  7333. --------S-1402-------------------------------
  7334. INT 14 - SERIAL - READ CHARACTER FROM PORT
  7335.     AH = 02h
  7336.     AL = 00h (ArtiCom)
  7337.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  7338. Return: AH = line status (see AH=03h)
  7339.     AL = received character if AH bit 7 clear
  7340. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  7341.       data ready
  7342.     various network and serial-port drivers support the standard BIOS
  7343.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  7344. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  7345. --------S-1402-------------------------------
  7346. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  7347.     AH = 02h
  7348.     DX = port number (0-3)
  7349. Return: AL = character received
  7350.     AH = 00h
  7351. SeeAlso: AH=01h,AH=02h"SERIAL"
  7352. --------S-1403-------------------------------
  7353. INT 14 - SERIAL - GET PORT STATUS
  7354.     AH = 03h
  7355.     AL = 00h (ArtiCom)
  7356.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  7357. Return: AH = line status (see below)
  7358.     AL = modem status (see below)
  7359.     AX = 9E00h if disconnected (ArtiCom)
  7360. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  7361.  
  7362. Bitfields for line status:
  7363.  bit 7    timeout
  7364.  bit 6    transmit shift register empty
  7365.  bit 5    transmit holding register empty
  7366.  bit 4    break detected
  7367.  bit 3    framing error
  7368.  bit 2    parity error
  7369.  bit 1    overrun error
  7370.  bit 0    receive data ready
  7371.  
  7372. Bitfields for modem status:
  7373.  bit 7    carrier detect
  7374.  bit 6    ring indicator
  7375.  bit 5    data set ready
  7376.  bit 4    clear to send
  7377.  bit 3    delta carrier detect
  7378.  bit 2    trailing edge of ring indicator
  7379.  bit 1    delta data set ready
  7380.  bit 0    delta clear to send
  7381. --------S-1404-------------------------------
  7382. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  7383.     AH = 04h
  7384.     AL = break status
  7385.         00h if break
  7386.         01h if no break
  7387.     BH = parity (see below)
  7388.     BL = number of stop bits
  7389.         00h one stop bit
  7390.         01h two stop bits (1.5 if 5 bit word length)
  7391.     CH = word length (see below)
  7392.     CL = bps rate (see below)
  7393.     DX = port number
  7394. Return: AX = port status code (see AH=00h)
  7395. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  7396.  
  7397. Values for parity:
  7398.  00h    no parity
  7399.  01h    odd parity
  7400.  02h    even parity
  7401.  03h    stick parity odd
  7402.  04h    stick parity even
  7403.  
  7404. Values for word length:
  7405.  00h    5 bits
  7406.  01h    6 bits
  7407.  02h    7 bits
  7408.  03h    8 bits
  7409.  
  7410. Values for bps rate:
  7411.  00h    110
  7412.  01h    150
  7413.  02h    300
  7414.  03h    600
  7415.  04h    1200
  7416.  05h    2400
  7417.  06h    4800
  7418.  07h    9600
  7419.  08h    19200
  7420. --------S-1404-------------------------------
  7421. INT 14 - FOSSIL - INITIALIZE DRIVER
  7422.     AH = 04h
  7423.     DX = port number
  7424.     optionally BX=4F50h
  7425.            ES:CX -> byte to be set upon ^C
  7426. Return: AX = 1954h (if successful)
  7427.     BL = maximum function number supported (excluding 7Eh and above)
  7428.     BH = revision of FOSSIL specification supported
  7429.     DTR is raised
  7430. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  7431.       following byte contains the maximum function number supported; this
  7432.       can serve as an installation check
  7433. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  7434. Index:    installation check;FOSSIL
  7435. --------S-1404-------------------------------
  7436. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  7437.     AH = 04h
  7438. Return: port initialized; if Hayes-compatible modem, a connection has been
  7439.       established
  7440. Note:    the port number is stored at offset BEh in the Task Control Block
  7441.       (see INT 15/AH=13h"MultiDOS")
  7442. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  7443. --------S-1404-------------------------------
  7444. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  7445.     AH = 04h
  7446.     AL = initializing parameters
  7447.         bits 7-5 unused
  7448.         bits 4,3: parity (00 none, 01 odd, 11 even)
  7449.         bit 2: stop bits (0 = one, 1 = two)
  7450.         bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  7451.     BX = baud rate
  7452.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7453. Return: AH = status
  7454.         00h successful
  7455.         FFh error
  7456. SeeAlso: AH=05h"Digiboard"
  7457. --------S-1404-------------------------------
  7458. INT 14 - MBBIOS - INQUIRY
  7459.     AH = 04h
  7460. Return: AH = AAh
  7461.     AL = 55h
  7462. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  7463. --------S-140400-----------------------------
  7464. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  7465.     AX = 0400h
  7466. Return: AX = 0FF0h
  7467. SeeAlso: AX=0401h,AX=0408h
  7468. --------S-140401-----------------------------
  7469. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  7470.     AX = 0401h
  7471.     CX = mode
  7472. SeeAlso: AX=0400h,AX=0402h
  7473. --------S-140402-----------------------------
  7474. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  7475.     AX = 0402h
  7476.     CL = parameters
  7477. SeeAlso: AX=0400h,AX=0401h
  7478. --------S-140403-----------------------------
  7479. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  7480.     AX = 0403h
  7481.     CX = timeout
  7482. SeeAlso: AX=0400h
  7483. --------S-140404-----------------------------
  7484. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  7485.     AX = 0404h
  7486. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  7487. --------S-140405-----------------------------
  7488. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  7489.     AX = 0405h
  7490. Return: AX = number of characters in buffer
  7491. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  7492. --------S-140406-----------------------------
  7493. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  7494.     AX = 0406h
  7495. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  7496. --------S-140407-----------------------------
  7497. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  7498.     AX = 0407h
  7499. Return: AX = number of characters in the buffer
  7500. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  7501. --------S-140408-----------------------------
  7502. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  7503.     AX = 0408h
  7504. SeeAlso: AX=0400h
  7505. --------S-1405-------------------------------
  7506. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  7507.     AH = 05h
  7508.     AL = function
  7509.         00h read modem control register
  7510.           Return: BL = modem control register (see below)
  7511.               AH = status
  7512.         01h write modem control register
  7513.           BL = modem control register (see below)
  7514.           Return: AX = status
  7515.     DX = port number
  7516. Note:    also supported by ArtiCom
  7517. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  7518.  
  7519. Bitfields for modem control register:
  7520.  bit 0    data terminal ready
  7521.  bit 1    request to send
  7522.  bit 2    OUT1
  7523.  bit 3    OUT2
  7524.  bit 4    LOOP
  7525.  bits 5-7 reserved
  7526. --------S-1405-------------------------------
  7527. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  7528.     AH = 05h
  7529.     DX = port number
  7530. Return: none
  7531.     DTR is not affected
  7532. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  7533. --------S-1405-------------------------------
  7534. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  7535.     AH = 05h
  7536.     AL = timeout in seconds (00h = never)
  7537. Return: AL = status
  7538.         00h successful
  7539.         AH = character read
  7540.         01h read error
  7541.         02h timed out
  7542.         other modem status (CTS, DSR) changed
  7543. Note:    the port number is stored at offset BEh in the Task Control Block
  7544. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  7545. SeeAlso: INT 15/AH=13h"MultiDOS"
  7546. --------S-1405-------------------------------
  7547. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  7548.     AH = 05h
  7549.     AL = protocol
  7550.         bits 7-4 unused
  7551.         bit 3: RTS/CTS
  7552.         bit 2: DSR
  7553.         bits 1,0: XON/XOFF
  7554.     BH = new XOFF character (00h = current)
  7555.     BL = new XON character (00h = current)
  7556.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7557. Return: AH = status
  7558.         00h successful
  7559.         FFh error
  7560. SeeAlso: AH=04h"Digiboard"
  7561. --------S-1405-------------------------------
  7562. INT 14 - MBBIOS - DROP DTR AND RTS
  7563.     AH = 05h
  7564.     DX = port number
  7565. Return: none
  7566. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  7567. --------S-1405-------------------------------
  7568. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  7569.     AH = 05h
  7570.     AL = bit 7: set to enable/disable CD monitoring, clear to set protocol
  7571.          ---bit 7 set---
  7572.          bit 4: CD monitoring enabled
  7573.          bit 5: automatic restart enabled
  7574.          ---bit 7 clear---
  7575.          bit 0: receive XON/XOFF
  7576.          bit 1: transmit XON/XOFF
  7577.          bit 2: DTR/DSR
  7578.          bit 3: RTS/CTS
  7579.     BH = new XOFF character
  7580.     BL = new XON character
  7581.     DX = port number
  7582. Return: AH = FFh if invalid protocol
  7583. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  7584. --------S-1406-------------------------------
  7585. INT 14 - FOSSIL - RAISE/LOWER DTR
  7586.     AH = 06h
  7587.     DX = port
  7588.     AL = DTR state to be set
  7589.         00h = lower
  7590.         01h = raise
  7591. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  7592. --------S-1406-------------------------------
  7593. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  7594.     AH = 06h
  7595.     AL = character
  7596. Return: AL = status
  7597.         00h successful
  7598. Notes:    the port number is stored at offset BEh in the Task Control Block
  7599.     if output queue is full, the calling task is blocked until the
  7600.       character can be stored
  7601. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  7602. SeeAlso: INT 15/AH=13h"MultiDOS"
  7603. --------S-1406-------------------------------
  7604. INT 14 - MBBIOS - RAISE DTR AND RTS
  7605.     AH = 06h
  7606.     DX = port number
  7607. Return: none
  7608. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  7609. --------S-1406-------------------------------
  7610. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  7611.     AH = 06h
  7612.     DX = port number
  7613. Return: AH bit 7 set
  7614.     AL = number of highest function supported by driver
  7615. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  7616.       operating system by The Software Link, Inc.
  7617. SeeAlso: AH=18h"PC-MOS"
  7618. --------N-1406-------------------------------
  7619. INT 14 - TelAPI - ???
  7620.     AH = 06h
  7621.     ???
  7622. Return: ???
  7623. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI"
  7624. --------S-1407-------------------------------
  7625. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  7626.     AH = 07h
  7627. Return: AL = timer tick interrupt number
  7628.     AH = ticks per second on interrupt number in AL
  7629.     DX = approximate number of milliseconds per tick
  7630. SeeAlso: AH=16h
  7631. --------S-1407-------------------------------
  7632. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  7633.     AH = 07h
  7634. Return: CL = modem status (see AH=03h)
  7635.     CH = character at head of input queue (if any)
  7636.     DX = number of characters in input queue
  7637. Note:    the port number is stored at offset BEh in the Task Control Block
  7638. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  7639. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  7640. --------S-1407-------------------------------
  7641. INT 14 - MBBIOS - SEND BREAK
  7642.     AH = 07h
  7643.     DX = port number
  7644. Return: none
  7645. SeeAlso: AH=06h"MBBIOS"
  7646. --------S-1407-------------------------------
  7647. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  7648.     AH = 07h
  7649.     BX = duration of break in clock ticks
  7650.     DX = port number
  7651. Return: nothing
  7652. --------N-1407-------------------------------
  7653. INT 14 - TelAPI - ???
  7654.     AH = 07h
  7655.     ???
  7656. Return: ???
  7657. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI"
  7658. --------S-1408-------------------------------
  7659. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  7660.     AH = 08h
  7661.     DX = port number
  7662. SeeAlso: AH=09h"FOSSIL"
  7663. --------S-1408-------------------------------
  7664. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  7665.     AH = 08h
  7666. Return: AL = line status (see AH=03h)
  7667.     AH destroyed
  7668. Notes:    the port number is stored at offset BEh in the Task Control Block
  7669.     on every line status change, the line status is ORed with the line
  7670.       status accumulator; this function returns the accumulator and clears
  7671.       it
  7672. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  7673. --------S-1408-------------------------------
  7674. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  7675.     AH = 08h
  7676.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7677. Return: AH = RS232 status bits (see AH=03h)
  7678.     ZF set if no characters queued
  7679.     ZF clear if character available
  7680.         AL = next character
  7681. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard"
  7682. --------S-1408-------------------------------
  7683. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  7684.     AH = 08h
  7685.     DX = port number
  7686. Return: AL = character
  7687.     AH = status (see AH=02h)
  7688. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  7689. --------S-1408-------------------------------
  7690. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  7691.     AH = 08h
  7692.     DX = port number
  7693. Return: CF set if carrier loss detected
  7694.     ZF set if input buffer empty
  7695.     ZF clear if characters available
  7696.         AL = next character dequeued
  7697. --------S-1409-------------------------------
  7698. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  7699.     AH = 09h
  7700.     DX = port number
  7701. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  7702. --------S-1409-------------------------------
  7703. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  7704.     AH = 09h
  7705. Return: modem status byte cleared
  7706. Note:    the port number is stored at offset BEh in the Task Control Block
  7707. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  7708. --------S-1409-------------------------------
  7709. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  7710.     AH = 09h
  7711.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7712. Return: AH = status
  7713.         00h successful
  7714.         FFh error
  7715. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  7716. --------S-1409-------------------------------
  7717. INT 14 - MBBIOS - GET/SET OPTIONS
  7718.     AH = 09h
  7719.     AL = option byte
  7720.         00000001b - Transmit Buffering Enabled
  7721.         00000101b - Hardware Handshaking Enabled
  7722.         00100000b - High Speed Option Enabled
  7723.     DX = port number???
  7724. Return: AL = old option byte
  7725. SeeAlso: AH=04h"MBBIOS",AH=10h"FOSSIL"
  7726. --------S-1409-------------------------------
  7727. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  7728.     AH = 09h
  7729.     DX = port number
  7730. Return: nothing
  7731. SeeAlso: AH=13h"PC-MOS"
  7732. --------S-140A-------------------------------
  7733. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  7734.     AH = 0Ah
  7735.     DX = port number
  7736. SeeAlso: AH=09h"FOSSIL",AH=85h
  7737. --------S-140A-------------------------------
  7738. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  7739.     AH = 0Ah
  7740.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7741. Return: AX = number of characters available in buffer
  7742. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  7743. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  7744. --------S-140A-------------------------------
  7745. INT 14 - MBBIOS - WRITE BUFFER
  7746.     AH = 0Ah
  7747.     CX = count
  7748.     ES:DI -> buffer
  7749. Return: AX = status (see AH=03h)
  7750.     DI = is updated
  7751.     CX = unsent character count
  7752. SeeAlso: AH=0Bh"MBBIOS",AH=19h"FOSSIL"
  7753. --------S-140B-------------------------------
  7754. INT 14 - FOSSIL - TRANSMIT NO WAIT
  7755.     AH = 0Bh
  7756.     AL = character
  7757.     DX = port number
  7758. Return: AX = 0000h character not accepted
  7759.        = 0001h character accepted
  7760. SeeAlso: AH=01h
  7761. --------S-140B-------------------------------
  7762. INT 14 - MBBIOS - READ BUFFER
  7763.     AH = 0Bh
  7764.     CX = size of buffer
  7765.     ES:DI -> buffer
  7766. Return: AH = LSR
  7767.     AL = MSR
  7768.     CX = count of characters
  7769.     DI = is updated
  7770. SeeAlso: AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=18h"FOSSIL"
  7771. --------S-140C-------------------------------
  7772. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  7773.     AH = 0Ch
  7774.     DX = port number
  7775. Return: AX = FFFFh character not available
  7776.     AX = 00xxh character xx available
  7777. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  7778. --------S-140D-------------------------------
  7779. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  7780.     AH = 0Dh
  7781. Return: AX = FFFFh character not available
  7782.        = xxyyh standard IBM-style scan code
  7783. SeeAlso: AH=0Eh
  7784. --------S-140D-------------------------------
  7785. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  7786.     AH = 0Dh
  7787.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7788. Return: ES:BX -> CH_KEY_RDY flag
  7789. SeeAlso: AH=0Ah"Digiboard"
  7790.  
  7791. Values for CH_KEY_RDY flag:
  7792.  00h    receive buffer empty
  7793.  FFh    characters available
  7794. --------S-140E-------------------------------
  7795. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  7796.     AH = 0Eh
  7797. Return: AX = xxyyh standard IBM-style scan code
  7798. SeeAlso: AH=0Dh"FOSSIL"
  7799. --------S-140E-------------------------------
  7800. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  7801.     AH = 0EH
  7802.     CX = number of characters to write
  7803.     ES:BX -> string
  7804.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7805. Return: AX = number of characters actually written
  7806.     ZF clear if successful
  7807.     ZF set on error
  7808. SeeAlso: AH=0Fh"Digiboard"
  7809. --------S-140F-------------------------------
  7810. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  7811.     AH = 0Fh
  7812.     AL = bit mask describing requested flow control (see below)
  7813.     DX = port number
  7814. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  7815.  
  7816. Bitfields for requested flow control:
  7817.  bit 0    XON/XOFF on transmit (watch for XOFF while sending)
  7818.  bit 1    CTS/RTS (CTS on transmit/RTS on receive)
  7819.  bit 2    reserved
  7820.  bit 3    XON/XOFF on receive (send XOFF when buffer near full)
  7821.  bit 4-7 all 1
  7822. --------S-140F-------------------------------
  7823. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  7824.     AH = 0Fh
  7825.     CX = number of characters to read
  7826.     ES:BX -> buffer
  7827.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7828. Return: AX = number of characters read
  7829.     ZF clear if successful
  7830.     ZF set on error (line status or wrong number of characters)
  7831. SeeAlso: AH=0Eh"Digiboard"
  7832. --------S-1410-------------------------------
  7833. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  7834.     AH = 10h
  7835.     AL = bit mask
  7836.         bit 0: enable/disable ^C/^K checking
  7837.         bit 1: enable/disable the transmitter
  7838.     DX = port number
  7839. SeeAlso: AH=0Fh"FOSSIL"
  7840. --------S-1410-------------------------------
  7841. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  7842.     AH = 10h
  7843.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7844. Return: AH = status
  7845.         00h successful
  7846.         FFh error
  7847. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  7848. --------S-1411-------------------------------
  7849. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  7850.     AH = 11h
  7851.     DH = row
  7852.     DL = column
  7853. Note:    this is the same as INT 10/AH=02h
  7854. SeeAlso: AH=12h"FOSSIL"
  7855. --------S-1411-------------------------------
  7856. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  7857.     AH = 11h
  7858.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7859. Return: AH = status
  7860.         00h successful
  7861.         FFh error
  7862. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  7863. ----------1411-------------------------------
  7864. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  7865.     AH = 11h
  7866.     DX = port number
  7867. Return: AL = status
  7868.         00h successful
  7869.         01h IRQ for port is shared
  7870.         02h IRQ was reserved
  7871. SeeAlso: AH=04h,AH=05h,AH=12h"PC-MOS"
  7872. --------S-1412-------------------------------
  7873. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  7874.     AH = 12h
  7875. Return: DH = row
  7876.     DL = column
  7877. Note:    this is the same as INT 10/AH=03h
  7878. SeeAlso: AH=11h"FOSSIL"
  7879. --------S-1412-------------------------------
  7880. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  7881.     AH = 12h
  7882.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7883. Return: AX = number of bytes free
  7884. SeeAlso: AH=0Ah"Digiboard"
  7885. --------S-1412-------------------------------
  7886. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  7887.     AH = 12h
  7888.     DX = port number
  7889. Return: AH = status
  7890.         FFh port number invalid
  7891.     AL = line parameters (see AH=00h)
  7892.     AH = flow control configuration (see AH=05h"PC-MOS")
  7893.     CX:BX = bps rate
  7894.     DL = XOFF character or 00h for none
  7895.     DH = XON character or 00h for none
  7896. --------S-1413-------------------------------
  7897. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  7898.     AH = 13h
  7899.     AL = character
  7900. Note:    should not be called if it is unsafe to call DOS
  7901. SeeAlso: AH=15h
  7902. --------S-1413-------------------------------
  7903. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  7904.     AH = 13h
  7905.     DX = port number
  7906. Return: AH = status
  7907.         FFh port number invalid
  7908.         else
  7909.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  7910. SeeAlso: AH=17h"PC-MOS"
  7911. --------S-1414-------------------------------
  7912. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  7913.     AH = 14h
  7914.     AL = 01h enable watchdog
  7915.          00h disable watchdog
  7916.     DX = port number
  7917. --------S-1414-------------------------------
  7918. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  7919.     AH = 14h
  7920.     CX = number of characters in string
  7921.     DX = port number
  7922.     ES:BX -> string to be sent
  7923.     SI = timeout in timer ticks or 0000h for default
  7924. Return: AX = number of bytes actually sent
  7925.     ZF clear if successful
  7926.     ZF set on timeout
  7927. SeeAlso: AH=01h,AH=15h"PC-MOS"
  7928. --------S-1415-------------------------------
  7929. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  7930.     AH = 15h
  7931.     AL = character
  7932. SeeAlso: AH=13h"FOSSIL"
  7933. --------S-1415-------------------------------
  7934. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  7935.     AH = 15h
  7936.     CX = size of buffer
  7937.     DX = port number
  7938.     ES:BX -> buffer for received characters
  7939.     SI = timeout in clock ticks or 0000h for default
  7940. Return: AX = number of characters actually read
  7941.     ZF set on timeout (no data available)
  7942. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  7943. --------S-1416-------------------------------
  7944. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  7945.     AH = 16h
  7946.     AL = function
  7947.         00h = delete
  7948.         01h = add
  7949.     ES:DX -> routine to call
  7950. Return: AX = status
  7951.         0000h successful
  7952.         0001h unsuccessful
  7953. SeeAlso: AH=07h"FOSSIL"
  7954. --------S-1416-------------------------------
  7955. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  7956.     AH = 16h
  7957.     AL = CCB command number (see below)
  7958.     BL = byte 2
  7959.     BH = byte 3
  7960.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  7961.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  7962. Return: AH = status
  7963.         00h successful
  7964.         FFh error
  7965. SeeAlso: AH=18h"Digiboard"
  7966.  
  7967. Values for CCB command number:
  7968.  40h    Set Receive Mid Water Mark
  7969.  41h    Set Receive High Water Mark
  7970.  42h    Flush Receive Buffer
  7971.  43h    Flush Transmit Buffer
  7972.  44h    Transmit Pause
  7973.  45h    Transmit Resume
  7974.  46h    Set Interrupt to Host Mask
  7975.  47h    Set Baud, Data, Stop and Parity
  7976.  48h    Send Break
  7977.  49h    Set Modem Lines
  7978.  4Ah    Set Break Count
  7979.  4Bh    Set Handshake
  7980.  4Ch    Set Xon/Xoff Characters
  7981.  4Dh    Set Transmit Mid Water Mark
  7982.  4Eh    IRQ Polling Timer to Host
  7983.  4Fh    Buffer Set All
  7984.  50h    Port On
  7985.  51h    Port Off
  7986.  52h    Receive Pause
  7987.  53h    Special Character Interrupt
  7988.  54h    RS-422 Enable
  7989. --------S-1416-------------------------------
  7990. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  7991.     AH = 16h
  7992.     ES:BX -> calling driver's INT 14 entry point
  7993. Return: nothing
  7994. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  7995.       operating system by The Software Link, Inc.
  7996. --------S-1417-------------------------------
  7997. INT 14 - FOSSIL - REBOOT SYSTEM
  7998.     AH = 17h
  7999.     AL = method
  8000.         00h = cold boot
  8001.         01h = warm boot
  8002. SeeAlso: INT 19
  8003. --------S-1417-------------------------------
  8004. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  8005.     AH = 17h
  8006.     AL = new value for UART's modem control register
  8007.     DX = port number
  8008. Return: nothing
  8009. --------S-1418-------------------------------
  8010. INT 14 - FOSSIL - READ BLOCK
  8011.     AH = 18h
  8012.     CX = maximum number of characters to transfer
  8013.     DX = port number
  8014.     ES:DI -> user buffer
  8015. Return: AX = number of characters transferred
  8016. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  8017. --------S-1418-------------------------------
  8018. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  8019.     AH = 18h
  8020.     ES:BX -> 16-byte command string
  8021.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  8022. Return: AH = status
  8023.         00h successful
  8024.         80h timeout
  8025.     AL = mailbox status
  8026.         00h no errors
  8027.         8Xh BIOS error
  8028.     ES:BX buffer filled in with mailbox string
  8029.     ZF clear if no errors
  8030.     ZF set if either status byte contains an error code
  8031. SeeAlso: AH=16h"Digiboard"
  8032. --------S-1418-------------------------------
  8033. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  8034.     AH = 18h
  8035.     DX = port number
  8036. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  8037.         driver
  8038. SeeAlso: AH=06h"PC-MOS"
  8039. --------S-1419-------------------------------
  8040. INT 14 - FOSSIL - WRITE BLOCK
  8041.     AH = 19h
  8042.     CX = maximum number of characters to transfer
  8043.     DX = port number
  8044.     ES:DI -> user buffer
  8045. Return: AX = number of characters transferred
  8046. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  8047. --------S-1419-------------------------------
  8048. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  8049.     AH = 19h
  8050.     BL = flag
  8051.         00h disable special character interrupt
  8052.         FFh enable interrupt
  8053.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  8054. Return: AH = status
  8055.         00h successful
  8056.         FFh failed
  8057. SeeAlso: AH=1Ah"Digiboard"
  8058. --------S-1419-------------------------------
  8059. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  8060.     AH = 19h
  8061.     AL = what to flush
  8062.         bit 0: input buffer
  8063.         bit 1: output buffer
  8064.     DX = port number
  8065. Return: nothing
  8066. SeeAlso: AH=09h"PC-MOS"
  8067. --------S-141A-------------------------------
  8068. INT 14 - FOSSIL - BREAK BEGIN OR END
  8069.     AH = 1Ah
  8070.     AL = 00h stop sending 'break'
  8071.          01h start sending 'break'
  8072.     DX = port number
  8073. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  8074. --------S-141A-------------------------------
  8075. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  8076.     AH = 1Ah
  8077.     BX = subfunction
  8078.         00h return pointer to special character flag byte
  8079.         01h return pointer to special character counter word
  8080.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  8081. Return: ES:BX -> special character flag or counter
  8082. Notes:    flag is FFh if one or more special characters are in the receive
  8083.       buffer; it is 00h and the counter is invalid if no special characters
  8084.       are in the receive buffer
  8085.     counter (if valid) contains the number of characters in the receive
  8086.       buffer up to and including the last-received special character
  8087. --------S-141B-------------------------------
  8088. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  8089.     AH = 1Bh
  8090.     DX = port number
  8091.     CX = size of user buffer
  8092.     ES:DI -> user buffer for driver info (see below)
  8093. Return: AX = number of characters transferred
  8094.     CX = 3058h ("0X") (X00 FOSSIL only)
  8095.     DX = 2030h (" 0") (X00 FOSSIL only)
  8096.  
  8097. Format of driver info:
  8098. Offset    Size    Description
  8099.  00h    WORD    size of structure in bytes
  8100.  02h    BYTE    FOSSIL spec driver conforms to
  8101.  03h    BYTE    revision level of this specific driver
  8102.  04h    DWORD    pointer to ASCIZ identification string
  8103.  08h    WORD    size of the input buffer
  8104.  0Ah    WORD    number of bytes left in buffer
  8105.  0Ch    WORD    size of the output buffer
  8106.  0Eh    WORD    number of bytes left in buffer
  8107.  10h    BYTE    width of screen
  8108.  11h    BYTE    length of screen
  8109.  12h    BYTE    actual baud rate, computer to modem
  8110. --------S-141C-------------------------------
  8111. INT 14 - X00 FOSSIL - ACTIVATE PORT
  8112.     AH = 1Ch
  8113.     DX = port number
  8114. Return: AX = 1954h if successful
  8115.     BL = maximum function number supported (not including 7Eh and above)
  8116.     BH = revision of FOSSIL specification supported
  8117. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  8118.       with the PS/2 BIOS in a future release
  8119. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  8120. --------S-141D-------------------------------
  8121. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  8122.     AH = 1Dh
  8123.     DX = port number
  8124. Return: none
  8125. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  8126.       with the PS/2 BIOS in a future release
  8127.     ignored if the port was never activated with AH=04h or AH=1Ch
  8128. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  8129. --------S-141E-------------------------------
  8130. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  8131.     AH = 1Eh
  8132.     AL = break status
  8133.         00h if break
  8134.         01h if no break
  8135.     BH = parity (see below)
  8136.     BL = number of stop bits
  8137.         00h one stop bit
  8138.         01h two stop bits (1.5 if 5 bit word length)
  8139.     CH = word length (see below)
  8140.     CL = bps rate (see below)
  8141.     DX = port number
  8142. Return: AX = port status code (see AH=00h)
  8143. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  8144.     if the port was locked at X00 load time, the appropriate parameters are
  8145.       ignored
  8146. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  8147.  
  8148. Values for parity:
  8149.  00h    no parity
  8150.  01h    odd parity
  8151.  02h    even parity
  8152.  03h    stick parity odd
  8153.  04h    stick parity even
  8154.  
  8155. Values for word length:
  8156.  00h    5 bits
  8157.  01h    6 bits
  8158.  02h    7 bits
  8159.  03h    8 bits
  8160.  
  8161. Values for bps rate:
  8162.  00h    110
  8163.  01h    150
  8164.  02h    300
  8165.  03h    600
  8166.  04h    1200
  8167.  05h    2400
  8168.  06h    4800
  8169.  07h    9600
  8170.  08h    19200
  8171. --------S-141F-------------------------------
  8172. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  8173.     AH = 1Fh
  8174.     AL = 00h read modem control register
  8175.           Return: BL = modem control register (see below)
  8176.               AH = status
  8177.     AL = 01h write modem control register
  8178.           BL = modem control register (see below)
  8179.           Return: AX = status
  8180.     DX = port number
  8181. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  8182.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  8183. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  8184.  
  8185. Bitfields for modem control register:
  8186.  bit 0    data terminal ready
  8187.  bit 1    request to send
  8188.  bit 2    OUT1
  8189.  bit 3    OUT2 (interrupts) enabled
  8190.  bit 4    LOOP
  8191.  bits 5-7 reserved
  8192. --------S-1420-------------------------------
  8193. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  8194.     AH = 20h
  8195.     DX = port number
  8196. Return: AH = 00h if character was available
  8197.         AL = next character (removed from receive buffer)
  8198.     AX = FFFFh if no character available
  8199. SeeAlso: AH=0Ch,AH=21h"X00"
  8200. --------S-1420-------------------------------
  8201. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  8202.     AH = 20h
  8203.     AL = logical port (01h COM1, 02h COM2)
  8204.     DX = physical port number
  8205. Return: AX = status
  8206.         0000h successful
  8207.         FFFFh failed
  8208. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  8209. --------S-1420-------------------------------
  8210. INT 14 - MultiDOS Plus - INITIALIZE PORT
  8211.     AH = 20h
  8212.     AL = port parameters (see AH=00h"SERIAL")
  8213.     DX = port number (0-3)
  8214. Return: AH = status
  8215.         00h successful
  8216.         41h no such port
  8217.         64h monitor mode already active
  8218. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  8219. --------S-1420-------------------------------
  8220. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  8221.     AH = 20h
  8222.     DX = port number
  8223. Return: AX = number of bytes in output buffer
  8224. SeeAlso: AH=0Ah"PC-MOS"
  8225. --------S-1421-------------------------------
  8226. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  8227.     AH = 21h
  8228.     AL = character
  8229.     DX = port number
  8230. Notes:    the given character is inserted at the end of the receive buffer as if
  8231.       it had just arrived from the serial port; all normal receive
  8232.       processing (XON/XOFF, ^C/^K) is performed on the character
  8233.     fully re-entrant
  8234. SeeAlso: AH=20h"X00"
  8235. --------S-1421-------------------------------
  8236. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  8237.     AH = 21h
  8238.     DX = physical port number
  8239. Return: AX = status
  8240.         0000h successful
  8241.         FFFFh failed
  8242. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  8243. --------S-1421-------------------------------
  8244. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  8245.     AH = 21h
  8246.     AL = character to send
  8247.     DX = port number
  8248. Return: AH = status (see below)
  8249. Note:    monitor mode must have been turned on with AH=24h before calling
  8250. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  8251.  
  8252. Values for status:
  8253.  00h    successful
  8254.  39h    no DSR or CTS
  8255.  3Ch    no DSR
  8256.  3Bh    no CTS
  8257.  41h    no such port
  8258.  42h    monitor mode not active
  8259.  97h    timed out
  8260. --------S-1421-------------------------------
  8261. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  8262.     AH = 21h
  8263.     AL = char to send
  8264.     DX = port number
  8265.     SI = timeout in timer ticks (0000h = default)
  8266. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  8267.       operating system by The Software Link, Inc.
  8268. SeeAlso: AH=01h,AH=0Eh"PC/MOS",AH=22h"PC-MOS"
  8269. --------S-1422-------------------------------
  8270. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  8271.     AH = 22h
  8272.     AL = logical port (01h COM1, 02h COM2)
  8273. Return: AX = status (0000h successful)
  8274. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  8275. --------S-1422-------------------------------
  8276. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  8277.     AH = 22h
  8278.     DX = port number
  8279. Return: AH = status (see also AH=21h"MultiDOS")
  8280.         00h successful
  8281.         AL = character
  8282.         3Dh framing and parity error
  8283.         3Eh overrun error
  8284.         3Fh framing error
  8285.         40h parity error
  8286.         96h ring buffer overflow
  8287. Note:    if no character is available, this function waits until a character
  8288.       arrives or an implementation-dependent timeout elapses
  8289. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  8290. --------S-1422-------------------------------
  8291. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  8292.     AH = 22h
  8293.     DX = port number
  8294.     SI = timeout in timer ticks (0000h = default)
  8295. Return: AH = port status (see AH=03h bits 0..6)
  8296.          bit 7 = 1 indicates time-out
  8297.     AL = character received
  8298. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  8299.       operating system by The Software Link, Inc.
  8300. SeeAlso: AH=02h,AH=0Fh"PC-MOS",AH=21h"PC-MOS"
  8301. --------S-1423-------------------------------
  8302. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  8303.     AH = 23h
  8304.     AL = logical port (01h COM1, 02h COM2)
  8305.     DH = user ID
  8306.     DL = process ID (DH,DL both FFh for current task)
  8307. Return: AL = MW386 port mode (see below)
  8308.     CX = MW386 port number
  8309.     DH = owner's user ID
  8310.     DL = owner's task ID
  8311. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  8312.  
  8313. Bitfields for MW386 port mode:
  8314.  bit 0    port is shared (spooler only)
  8315.  bit 1    port is spooled instead of direct (spooler only)
  8316.  bit 2    port is assigned as logical COM device, not in spooler
  8317.  bit 3    port is free
  8318. --------S-1423-------------------------------
  8319. INT 14 - MultiDOS Plus - GET PORT STATUS
  8320.     AH = 23h
  8321.     DX = port number
  8322. Return: AH = line status (see AH=03h)
  8323.     AL = modem status (see AH=03h)
  8324. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  8325. --------S-1423-------------------------------
  8326. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  8327.     AH = 23h
  8328.     DX = port number
  8329.     BX = TCB segment/selector address of owner task
  8330. Return: nothing
  8331. SeeAlso: AH=0Dh"PC-MOS"
  8332. --------S-1424-------------------------------
  8333. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  8334.     AH = 24h
  8335.     CX = physical I/O port number
  8336.     DS:DX -> configuration table (see below)
  8337. Return: AH = 00h
  8338. Note:    invalid port numbers are merely ignored
  8339. SeeAlso: INT 17/AH=96h
  8340.  
  8341. Format of configuration table:
  8342. Offset    Size    Description
  8343.  00h    BYTE    baud rate (see below)
  8344.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  8345.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  8346.  03h    BYTE    stop bits (00h=1, 01h=2)
  8347.  04h    BYTE    receive flow control
  8348.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  8349.  05h    BYTE    transmit flow control (as for receive)
  8350.  
  8351. Values for baud rate:
  8352.  00h    38400
  8353.  01h    19200
  8354.  02h    9600
  8355.  03h    7200
  8356.  04h    4800
  8357.  05h    3600
  8358.  06h    2400
  8359.  07h    2000
  8360.  08h    1200
  8361.  09h    600
  8362.  0Ah    300
  8363.  0Bh    150
  8364.  0Ch    134.5
  8365. --------S-1424-------------------------------
  8366. INT 14 - MultiDOS Plus - SET MONITOR MODE
  8367.     AH = 24h
  8368.     AL = port status storage
  8369.         00h single status for entire receive buffer
  8370.         01h separate status kept for each byte in receive buffer
  8371.     DX = port number
  8372. Return: AH = status
  8373.         00h successful
  8374.         3Ah invalid status storage specified
  8375.         41h no such port
  8376.         64h monitor mode already active
  8377. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  8378.       port
  8379. SeeAlso: AH=20h"MultiDOS",AH=25h
  8380. --------S-1424-------------------------------
  8381. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  8382.     AH = 24h
  8383. Return: ???
  8384. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  8385.       operating system by The Software Link, Inc.
  8386. --------S-1425-------------------------------
  8387. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  8388.     AH = 25h
  8389.     AL = function
  8390.         00h only clear buffers
  8391.         01h clear buffers and deactivate
  8392.     DX = port number
  8393. Return: AH = status
  8394.         00h successful
  8395.         3Ah invalid function
  8396.         41h no such port
  8397.         42h monitor mode not active
  8398. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  8399. --------S-1427-------------------------------
  8400. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  8401.     AH = 27h
  8402.     DX = port number
  8403. Return: AH = status
  8404.         00h successful
  8405.         41h no such port
  8406.         42h monitor mode not active
  8407.     AL = number of characters in receive buffer
  8408. --------S-1456-------------------------------
  8409. INT 14 U - BWCOM14 - INSTALLATION CHECK
  8410.     AH = 56h
  8411. Return: CX = 0001h if installed
  8412. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  8413.       connected to the serial port) distributed as part of the
  8414.       Beame&Whiteside BW-NFS package
  8415. SeeAlso: AH=57h,AH=58h
  8416. --------S-1457-------------------------------
  8417. INT 14 U - BWCOM14 - ???
  8418.     AH = 57h
  8419.     ???
  8420. Return: AL = ???
  8421.     CX = status (0001h,0002h,FFFFh)
  8422. SeeAlso: AH=56h
  8423. --------S-1458-------------------------------
  8424. INT 14 U - BWCOM14 - ???
  8425.     AH = 58h
  8426.     ???
  8427. Return: CX = status (0001h,0002h)
  8428.     ???
  8429. --------S-147E-------------------------------
  8430. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  8431.     AH = 7Eh
  8432.     AL = code assigned to external application (80h-BFh)
  8433.         80h reserved for communications FOSSIL
  8434.         81h video FOSSIL
  8435.         82h reserved for keyboard FOSSIL
  8436.         83h reserved for system FOSSIL
  8437.     ES:DX -> entry point
  8438. Return: AX = 1954h
  8439.     BL = code assigned to application (same as input AL)
  8440.     DH = 00h failed
  8441.          01h successful
  8442. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  8443. --------S-147F-------------------------------
  8444. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  8445.     AH = 7Fh
  8446.     AL = code assigned to external application
  8447.     ES:DX -> entry point
  8448. Return: AX = 1954h
  8449.     BL = code assigned to application (same as input AL)
  8450.     DH = 00h failed
  8451.          01h successful
  8452. SeeAlso: AH=7Eh
  8453. --------S-1480-------------------------------
  8454. INT 14 - COMMUNICATIONS FOSSIL
  8455.     AH = 80h
  8456. SeeAlso: AH=7Eh
  8457. --------S-1480-------------------------------
  8458. INT 14 - COURIERS.COM - INSTALLATION CHECK
  8459.     AH = 80h
  8460. Return: AH = E8h if loaded
  8461. Program: COURIERS is a TSR utility by PC Magazine
  8462. --------S-148000-----------------------------
  8463. INT 14 - ARTICOM - INSTALLATION CHECK
  8464.     AX = 8000h
  8465. Return: AL = FFh if installed
  8466.         BH = major version
  8467.         BL = minor version
  8468. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  8469.       works on top of NetBIOS and allows modem/serial-port sharing by
  8470.       programs using INT 14 for serial I/O.
  8471. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cars and
  8472.       drivers
  8473. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  8474. --------S-148001-----------------------------
  8475. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  8476.     AX = 8001h
  8477. Return: AX = error code, if error (see AX=8003h)
  8478. SeeAlso: AX=8000h,AX=8002h,AX=8003h
  8479. Index:    uninstall;ARTICOM
  8480. --------S-148002-----------------------------
  8481. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  8482.     AX = 8002h
  8483.     ES:DI -> buffer for redirector status structure (see below)
  8484. Return: AX = error code, if error (see AX=8003h)
  8485. SeeAlso: AX=8000h,AX=8003h
  8486.  
  8487. Format of redirector status:
  8488. Offset    Size    Description
  8489.  00h    WORD    redirector major and minor version numbers
  8490.  02h    WORD    redirectable ports found
  8491.  04h    WORD    redirectable ports + local ports found
  8492.  06h    WORD    redirector internal buffer size
  8493.  08h    WORD    maximum servers maintained
  8494.  0Ah    WORD    number of adapters found
  8495. --------S-148003-----------------------------
  8496. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  8497.     AX = 8003h
  8498.     CX = error number to translate
  8499. Return: ES:DI -> ASCIZ error text or NULL if can't translate.
  8500. SeeAlso: AX=8000h
  8501.  
  8502. Values for error codes:
  8503.  00h    "No error"
  8504.  01h    "An invalid port number was specified"
  8505.  02h    "Port is already redirected"
  8506.  03h    "Too many ports redirected"
  8507.  04h    "Cannot locate the server"
  8508.  05h    "Server is busy"
  8509.  06h    "Access denied"
  8510.  07h    "Resource in use"
  8511.  08h    "Resource in use - request queued"
  8512.  09h    "No such resource"
  8513.  0Ah    "Invalid username/password pair"
  8514.  0Bh    "Noncompatible version number"
  8515.  0Ch    "Can't remove from memory"
  8516.  0Dh    "Bad NETBIOS adapter number"
  8517.  0Eh    "No more entries in list"
  8518.  0Fh    "Resource is not available at this time"
  8519.  10h    "Invalid value to INT 14 call"
  8520. --------S-148004-----------------------------
  8521. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  8522.     AX = 8004h
  8523.     DX = port to redirect (COM1=0, COM2=1, ...)
  8524.     CH = attach type
  8525.     CL = adapter to use for attach, 0FFh to search all
  8526.     ES:DI -> attachment structure (see below)
  8527. Return: AX = error code, if error (see AX=8003h)
  8528. Note:    The wildcard '*' is supported in the server and resource fields.  If
  8529.       wild cards are used then the first matching available server is
  8530.       attached.
  8531. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  8532.  
  8533. Format of attachment structure:
  8534. Offset    Size    Description
  8535.  00h 16 BYTEs    server to look for attach
  8536.  10h 16 BYTEs    attach to resource name
  8537.  20h 16 BYTEs    username for attach
  8538.  30h 16 BYTEs    password for username or resource
  8539.  40h    BYTE    attach type
  8540.         00h normal
  8541.         01h queue if resource is in use (not yet supported in v1.00)
  8542. --------S-148005-----------------------------
  8543. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  8544.     AX = 8005h
  8545.     DX = port to detach (COM1=0, COM2=1, ...)
  8546. Return: AX = error code, if error (see AX=8003h)
  8547. Note:    only a previously attached resource can be detached
  8548. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  8549. --------S-148006-----------------------------
  8550. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  8551.     AX = 8006h
  8552.     BX = remote port (COM1=0, COM2=1, ...)
  8553.     CL = adapter number, FFH to try all adapters
  8554.     ES:DI -> resource information structure (see below)
  8555.     DS:SI -> 16 byte server name. See note.
  8556. Return: AX = error code, if error (see AX=8003h)
  8557.     BX = next remote port, recall to get next resource info
  8558. Note:    Wild cards supported in both the resource field and server name
  8559.     string DS:SI. If wild cards used then first matching available
  8560.     resource information is searched. Set resource field to 0FFh to
  8561.     return all resources.
  8562. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  8563.  
  8564. Format of resource information structure:
  8565. Offset    Size    Description
  8566.  00h    BYTE    00h = free, else used
  8567.  01h 16 BYTEs    resource name
  8568.  11h 16 BYTEs    username of resource user
  8569.  21h    WORD    amount of time used
  8570.  23h    WORD    amount of time remaining
  8571.  53h 48 BYTEs    description of resource
  8572.  93h 64 BYTEs    initialization string for modem
  8573.  B3h 32 BYTEs    dial string for modem
  8574.  D3h 32 BYTEs    hang-up string for modem
  8575. --------S-148007-----------------------------
  8576. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  8577.     AX = 8007h
  8578.     DX = port index (COM1=0, COM2=1, ...)
  8579.     ES:DI -> buffer for port information structure (see below)
  8580. Return: CF clear if redirection info returned and port is redirected
  8581.     CF set if not a redirected port
  8582.     AX = error code, if error (see AX=8003h)
  8583. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  8584.  
  8585. Format of port information structure:
  8586. Offset    Size    Description
  8587.  00h 16 BYTEs    server name resource is on
  8588.  10h    BYTE    adapter number server is on
  8589.  11h 16 BYTEs    resource name
  8590.  21h    WORD    remote port index, use to get additional information
  8591.  23h    WORD    buffer size
  8592.  25h    WORD    baud rate (see below)
  8593.  26h    BYTE    modem status register
  8594.  27h    BYTE    modem control register
  8595.  28h    BYTE    line status register
  8596.  29h    BYTE    line control register
  8597.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  8598.  2Bh    WORD    send timeout in ticks
  8599.  2Dh    WORD    receive timeout in ticks
  8600.  2Fh    WORD    time used on remote port
  8601.  31h    WORD    time left before timeout
  8602.  33h    BYTE    if server changes allowed?
  8603.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  8604.  
  8605. Values for baud rate:
  8606.  00h    110
  8607.  01h    150
  8608.  02h    300
  8609.  03h    600
  8610.  04h    1200
  8611.  05h    2400
  8612.  06h    4800
  8613.  07h    9600
  8614.  08h    19200
  8615.  09h    38400
  8616.  0Ah    57600
  8617.  0Bh    115200
  8618.  0Ch    134.5
  8619.  0Dh    1800
  8620.  0Eh    2000
  8621.  0Fh    3600
  8622.  10h    7200
  8623. --------S-148008-----------------------------
  8624. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  8625.     AX = 8008h
  8626.     BX = server index (0,1,...)
  8627.     ES:DI -> server name structure (see below)
  8628. Return: AX = error code, if error (see AX=8003h)
  8629.     BX = next remote port, repeat call to get next available server
  8630. Note:    the wildcard '*' is supported in the server name field.     Set the
  8631.       server name to FFh to search for all servers.
  8632. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  8633.  
  8634. Format of server name structure:
  8635. Offset     Size      Description
  8636.   00h 16 BYTEs      (call) ASCIZ servername
  8637.   10h     BYTE      (return) the adapter server is found
  8638. --------S-148009-----------------------------
  8639. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  8640.     AX = 8009h
  8641.     BX = send timeout in ticks
  8642.     CX = receive timeout in ticks
  8643.     DX = port index (COM1=0, COM2=1, ...)
  8644. Return: nothing
  8645. SeeAlso: AX=8000h,AX=800Ah
  8646. --------S-14800A-----------------------------
  8647. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  8648.     AX = 800Ah
  8649.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  8650.     DX = port index (COM1=0, COM2=1, ...)
  8651. Return: AX = error code, if error (see AX=8003h)
  8652. Note:    for attached ports only!
  8653. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  8654. --------S-148025-----------------------------
  8655. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  8656.     AX = 8025h
  8657.     DS:DX -> address of trap function (see below) to call on read/write
  8658. Note:    setting the vector to a user function allows the redirector's activity
  8659.       to be monitored.
  8660. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  8661.  
  8662. Trap function called with:
  8663.     AH = operation
  8664.         80h reading character
  8665.         81h writing character
  8666.     AL = character
  8667.     Return: AX must be preserved
  8668.         far JUMP to old trap function (see AX=8035h)
  8669. --------S-148035-----------------------------
  8670. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  8671.     AX = 8035h
  8672. Return: ES:BX -> address of current send/receive routine
  8673. Note:    this function returns the address of the routine which is called
  8674.       inside A-REDIR.EXE each time a character is received or sent on the
  8675.       active COM port.
  8676. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  8677. --------S-1481-------------------------------
  8678. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  8679.     AH = 81h
  8680.     AL = port number (1-4)
  8681. Return: AH = 00h port available
  8682.          01h port exists but already in use
  8683.          02h port nonexistent
  8684. Program: COURIERS is a TSR utility by PC Magazine
  8685. SeeAlso: AH=83h,AH=8Dh
  8686. --------S-1481-------------------------------
  8687. INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
  8688.     AH = 81h
  8689.     BX:DI -> port control block
  8690. Return: ???
  8691. SeeAlso: AH=00h
  8692.  
  8693. Format of port control block:
  8694. Offset    Type    Description
  8695.  00h    WORD    port IO address
  8696.  02h    WORD    port IRQ
  8697.  04h    WORD    baud rate
  8698.  06h    WORD    parity
  8699.  08h    WORD    data bits
  8700.  0Ah    WORD    stop bits
  8701.  0Ch    WORD    break status
  8702.         0000h off
  8703.  0Eh    WORD    flow control protocol
  8704.  10h    BYTE    input block
  8705.  11h    BYTE    output block
  8706.  12h    WORD    low threshold
  8707.  14h    WORD    high threshold
  8708.  16h    WORD    segment of buffer
  8709.  18h    WORD    offset of buffer
  8710.  1Ah    WORD    input buffer length
  8711.  1Ch    WORD    output buffer length
  8712.  1Eh    BYTE    auxiliary address
  8713.  1Fh    BYTE    spare
  8714.  20h  4 WORDs    spares
  8715. --------V-148100-----------------------------
  8716. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  8717.     AX = 8100h
  8718.     ES:DI -> buffer for VFOSSIL information (see below)
  8719. Return: AX = 1954h if installed
  8720. SeeAlso: AH=7Eh,AX=8101h
  8721.  
  8722. Format of VFOSSIL information:
  8723. Offset    Size    Description
  8724.  00h    WORD    size of information in bytes, including this field
  8725.  02h    WORD    VFOSSIL major version
  8726.  04h    WORD    VFOSSIL revision level
  8727.  06h    WORD    highest VFOSSIL application function supported
  8728. --------V-148101-----------------------------
  8729. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  8730.     AX = 8101h
  8731.     ES:DI -> buffer for application function table (see below)
  8732.     CX = length of buffer in bytes
  8733. Return: AX = 1954h if installed
  8734.         BH = highest VFOSSIL application function supported
  8735. Note:    the number of initialized pointers in the application function table
  8736.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  8737.       will be initialized
  8738. SeeAlso: AX=8102h
  8739.  
  8740. Format of application function table:
  8741. Offset    Size    Description
  8742.  00h    DWORD    -> function to query current video mode (VioGetMode)
  8743.  04h    DWORD    -> function to set video mode (VioSetMode)
  8744.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  8745.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  8746.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  8747.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  8748.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  8749.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  8750.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  8751.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  8752.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  8753.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  8754.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  8755.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  8756.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  8757.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  8758.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  8759.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  8760.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  8761.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  8762.  
  8763. Format of video mode data structure:
  8764. Offset    Size    Description
  8765.  00h    WORD    length of structure including this field
  8766.  02h    BYTE    mode characteristics
  8767.         bit 0: clear if MDA, set otherwise
  8768.         bit 1: graphics mode
  8769.         bit 2: color disabled (black-and-white)
  8770.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  8771.  04h    WORD    number of text columns
  8772.  06h    WORD    number of text rows
  8773.  08h    WORD    reserved
  8774.  0Ah    WORD    reserved
  8775.  0Ch    DWORD    reserved
  8776.  
  8777. Format of video configuration data:
  8778. Offset    Size    Description
  8779.  00h    WORD    structure length including this field
  8780.  02h    WORD    adapter type
  8781.         00h monochrome/printer
  8782.         01h CGA
  8783.         02h EGA
  8784.         03h VGA
  8785.         07h 8514/A
  8786.  04h    WORD    display type
  8787.         00h monochrome
  8788.         01h color
  8789.         02h enhanced color
  8790.         09h 8514
  8791.  06h    DWORD    adapter memory size
  8792.  
  8793. Format of cursor type record:
  8794. Offset    Size    Description
  8795.  00h    WORD    cursor start line
  8796.  02h    WORD    cursor end line
  8797.  04h    WORD    cursor width (always 01h)
  8798.  06h    WORD    cursor attribute (FFFFh = hidden)
  8799.  
  8800. Call VioGetMode with:
  8801.     STACK:    WORD    VIO handle (must be 00h)
  8802.         DWORD    pointer to video mode data structure (see above)
  8803. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see below)
  8804.  
  8805. Values for error code:
  8806.  0000h    successful
  8807.  0074h    internal VIO failure
  8808.  0163h    unsupported mode
  8809.  0166h    invalid row value
  8810.  0167h    invalid column value
  8811.  017Eh    buffer too small
  8812.  01A5h    invalid VIO parameter
  8813.  01B4h    invalid VIO handle
  8814.  
  8815. Call VioSetMode with:
  8816.     STACK:    WORD    VIO handle (must be 00h)
  8817.         DWORD    pointer to video mode data structure (see above)
  8818. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  8819.  
  8820. Call VioGetConfig with:
  8821.     STACK:    WORD    VIO handle (must be 00h)
  8822.         DWORD    pointer to video configuration data buffer (see above)
  8823. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  8824.  
  8825. Call VioWrtTTY with:
  8826.     STACK:    WORD    VIO handle (must be 00h)
  8827.         WORD    length of string
  8828.         DWORD    pointer to character string to be written to screen
  8829. Return: AX = error code (00h, 74h, 1B4h) (see above)
  8830. Notes:    write wraps at end of line and terminates if it reaches end of screen
  8831.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  8832.       not required to be reentrant; in non-ANSI mode, the function is
  8833.       reentrant and may be called from within an MS-DOS function call
  8834.  
  8835. Call VioGetANSI with:
  8836.     STACK:    WORD    VIO handle (must be 00h)
  8837.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  8838.             or 01h if ANSI is on
  8839. Return: AX = error code (00h, 74h, 1B4h) (see above)
  8840.  
  8841. Call VioSetANSI with:
  8842.     STACK:    WORD    VIO handle (must be 00h)
  8843.         DWORD    pointer to WORD indicating new state of ANSI
  8844.             00h off
  8845.             01h on
  8846. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  8847.  
  8848. Call VioGetCurPos with:
  8849.     STACK:    WORD    VIO handle (must be 00h)
  8850.         DWORD    pointer to WORD to hold current cursor column (0-based)
  8851.         DWORD    pointer to WORD to hold current cursor row (0-based)
  8852. Return: AX = error code (00h, 74h, 1B4h) (see above)
  8853.  
  8854. Call VioSetCurPos with:
  8855.     STACK:    WORD    VIO handle (must be 00h)
  8856.         WORD    cursor column
  8857.         WORD    cursor row
  8858. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8859. Note:    if either coordinate is invalid, the cursor is not moved
  8860.  
  8861. Call VioGetCurType with:
  8862.     STACK:    WORD    VIO handle (must be 00h)
  8863.         DWORD    pointer to cursor type record (see above)
  8864. Return: AX = error code (00h, 74h, 1B4h) (see above)
  8865.  
  8866. Call VioSetCurType with:
  8867.     STACK:    WORD    VIO handle (must be 00h)
  8868.         DWORD    pointer to cursor type record (see above)
  8869. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  8870.  
  8871. Call VioScrollUp with:
  8872.     STACK:    WORD    VIO handle (must be 00h)
  8873.         DWORD    pointer to char/attr cell for filling emptied rows
  8874.         WORD    number or rows to scroll (FFFFh = clear area)
  8875.         WORD    right column of scroll area
  8876.         WORD    bottom row of scroll area
  8877.         WORD    left column of scroll area
  8878.         WORD    top row of scroll area
  8879. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8880.  
  8881. Call VioScrollDn with:
  8882.     STACK:    WORD    VIO handle (must be 00h)
  8883.         DWORD    pointer to char/attr cell for filling emptied rows
  8884.         WORD    number or rows to scroll (FFFFh = clear area)
  8885.         WORD    right column of scroll area
  8886.         WORD    bottom row of scroll area
  8887.         WORD    left column of scroll area
  8888.         WORD    top row of scroll area
  8889. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8890.  
  8891. Call VioReadCellStr with:
  8892.     STACK:    WORD    VIO handle (must be 00h)
  8893.         WORD    column at which to start reading
  8894.         WORD    row at which to start reading
  8895.         DWORD    pointer to WORD containing length of buffer in bytes
  8896.             on return, WORD contains number of bytes actually read
  8897.         DWORD    pointer to buffer for cell string
  8898. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  8899.  
  8900. Call VioReadCharStr with:
  8901.     STACK:    WORD    VIO handle (must be 00h)
  8902.         WORD    column at which to start reading
  8903.         WORD    row at which to start reading
  8904.         DWORD    pointer to WORD containing length of buffer in bytes
  8905.             on return, WORD contains number of bytes actually read
  8906.         DWORD    pointer to buffer for character string
  8907. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  8908.  
  8909. Call VioWrtCellStr with:
  8910.     STACK:    WORD    VIO handle (must be 00h)
  8911.         WORD    column at which to start writing
  8912.         WORD    row at which to start writing
  8913.         WORD    length of cell string in bytes
  8914.         DWORD    pointer to cell string to write
  8915. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8916. Note:    write wraps at end of line and terminates if it reaches end of screen
  8917.  
  8918. Call VioWrtCharStr with:
  8919.     STACK:    WORD    VIO handle (must be 00h)
  8920.         WORD    column at which to start writing
  8921.         WORD    row at which to start writing
  8922.         WORD    length of character string
  8923.         DWORD    pointer to character string to write
  8924. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8925. Note:    write wraps at end of line and terminates if it reaches end of screen
  8926.  
  8927. Call VioWrtCharStrAttr with:
  8928.     STACK:    WORD    VIO handle (must be 00h)
  8929.         DWORD    pointer to attribute to be applied to each character
  8930.         WORD    column at which to start writing
  8931.         WORD    row at which to start writing
  8932.         WORD    length of character string
  8933.         DWORD    pointer to character string to write
  8934. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8935. Note:    write wraps at end of line and terminates if it reaches end of screen
  8936.  
  8937. Call VioWrtNAttr with:
  8938.     STACK:    WORD    VIO handle (must be 00h)
  8939.         WORD    column at which to start writing
  8940.         WORD    row at which to start writing
  8941.         WORD    number of times to write attribute
  8942.         DWORD    pointer to display attribute to replicate
  8943. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8944. Note:    write wraps at end of line and terminates if it reaches end of screen
  8945.  
  8946. Call VioWrtNCell with:
  8947.     STACK:    WORD    VIO handle (must be 00h)
  8948.         WORD    column at which to start writing
  8949.         WORD    row at which to start writing
  8950.         WORD    number of times to write cell
  8951.         DWORD    pointer to cell to replicate
  8952. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8953. Note:    write wraps at end of line and terminates if it reaches end of screen
  8954.  
  8955. Call VioWrtNChar with:
  8956.     STACK:    WORD    VIO handle (must be 00h)
  8957.         WORD    column at which to start writing
  8958.         WORD    row at which to start writing
  8959.         WORD    number of times to write character
  8960.         DWORD    pointer to character to replicate
  8961. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  8962. Note:    write wraps at end of line and terminates if it reaches end of screen
  8963. --------V-148102-----------------------------
  8964. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  8965.     AX = 8102h
  8966. Return: AX = 1954h
  8967. Note:    terminates all operations; after this call, the video FOSSIL may either
  8968.       be removed from memory or reinitialized
  8969. SeeAlso: AX=8101h,AX=8103h
  8970. --------V-148103-----------------------------
  8971. INT 14 - VIDEO FOSSIL - UNINSTALL
  8972.     AX = 8103h
  8973. Return: AX = 1954h
  8974. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  8975. --------K-1482-------------------------------
  8976. INT 14 - KEYBOARD FOSSIL
  8977.     AH = 82h
  8978. SeeAlso: AH=7Eh
  8979. --------S-1482-------------------------------
  8980. INT 14 - COURIERS.COM - CONFIGURE PORT
  8981.     AH = 82h
  8982.     AL = port number (1-4)
  8983.     BX = speed (bps)
  8984.     CX = bit flags
  8985.         bit 0: enable input flow control
  8986.         bit 1: enable output flow control
  8987.         bit 2: use X.PC protocol (not yet implemented)
  8988. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  8989. ----------1483-------------------------------
  8990. INT 14 - SYSTEM FOSSIL
  8991.     AH = 83h
  8992. SeeAlso: AH=7Eh
  8993. --------S-1483-------------------------------
  8994. INT 14 - COURIERS.COM - START INPUT
  8995.     AH = 83h
  8996.     ES:BX -> circular input buffer
  8997.     CX = length of buffer
  8998.         (should be at least 128 bytes if input flow control enabled)
  8999. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  9000. --------S-1484-------------------------------
  9001. INT 14 - COURIERS.COM - READ CHARACTER
  9002.     AH = 84h
  9003. Return: ZF set if no characters available
  9004.     ZF clear
  9005.        AL = character
  9006.        AH = modem status bits
  9007.         bit 7: set on input buffer overflow
  9008. SeeAlso: AH=02h,AH=86h,AH=89h
  9009. --------S-1485-------------------------------
  9010. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  9011.     AH = 85h
  9012. SeeAlso: AH=0Ah,AH=88h
  9013. --------S-1486-------------------------------
  9014. INT 14 - COURIERS.COM - START OUTPUT
  9015.     AH = 86h
  9016.     ES:BX -> output buffer
  9017.     CX = length of output buffer
  9018. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  9019. --------S-1487-------------------------------
  9020. INT 14 - COURIERS.COM - OUTPUT STATUS
  9021.     AH = 87h
  9022. Return: AX = number of unsent characters
  9023. --------S-1488-------------------------------
  9024. INT 14 - COURIERS.COM - ABORT OUTPUT
  9025.     AH = 88h
  9026. SeeAlso: AH=09h,AH=85h
  9027. --------S-1489-------------------------------
  9028. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  9029.     AH = 89h
  9030.     CL = character to send
  9031. SeeAlso: AH=01h,AH=84h
  9032. --------S-148A-------------------------------
  9033. INT 14 - COURIERS.COM - SEND BREAK
  9034.     AH = 8Ah
  9035. SeeAlso: AH=89h,AH=FAh
  9036. --------S-148C-------------------------------
  9037. INT 14 - COURIERS.COM - SET SPEED
  9038.     AH = 8Ch
  9039.     BX = speed in bps
  9040. SeeAlso: AH=00h,AH=82h"COURIERS"
  9041. --------S-148D-------------------------------
  9042. INT 14 - COURIERS.COM - DECONFIGURE PORT
  9043.     AH = 8Dh
  9044. SeeAlso: AH=82h"COURIERS"
  9045. --------S-14A0-------------------------------
  9046. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  9047.     AH = A0h
  9048.     ES:BX -> ASCIZ internet host name
  9049.     CX = length of name
  9050. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see below)
  9051.     CL = session ID
  9052. Program: the Bridge Application Program Interface is a set of functions which
  9053.       makes many of the details of LAN communications transparent
  9054. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  9055.  
  9056. Values for return code:
  9057.  00h    successful
  9058.  01h    no characters written
  9059.  02h    no characters read
  9060.  03h    no such session
  9061.  04h    clearinghouse name not found
  9062.  05h    no response from host
  9063.  06h    no more sessions available
  9064.  07h    session aborted
  9065.  08h    invalid clearinghouse name
  9066.  09h    not supported
  9067.  0Ah    internal (general) network error
  9068.  0Bh    out of memory
  9069.  0Ch    invalid IP address
  9070. --------S-14A0--CXFFFF-----------------------
  9071. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  9072.     AH = A0h
  9073.     CX = FFFFh
  9074. Return: CF clear if successful
  9075.         AX = 5445h ('TE')
  9076.         CX <> FFFFh
  9077.         DX = port number
  9078.     CF set on error
  9079. Program: TES is a network serial port emulation program
  9080. SeeAlso: AH=A1h"TES"
  9081. --------S-14A1-------------------------------
  9082. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  9083.     AH = A1h
  9084.     DH = session ID (00h for external session managment)
  9085. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  9086. SeeAlso: AH=A0h"BAPI"
  9087. --------S-14A1-------------------------------
  9088. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  9089.     AH = A1h
  9090. Return: CX = number of active sessions
  9091.     ES:SI -> status array (see below)
  9092. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  9093.  
  9094. Format of status array entry:
  9095. Offset    Size    Description
  9096.  00h    BYTE    status
  9097.  01h    WORD    offset of name
  9098. --------S-14A2-------------------------------
  9099. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  9100.     AH = A2h
  9101.     AL = character
  9102.     DH = session ID (00h for external session managment)
  9103. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  9104. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  9105. --------S-14A2-------------------------------
  9106. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  9107.     AH = A2h
  9108. Return: CX = number of servers
  9109.     ES:SI -> array of offsets from ES for server names
  9110. SeeAlso: AH=A1h"TES"
  9111. --------S-14A3-------------------------------
  9112. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  9113.     AH = A3h
  9114.     DH = session ID (00h for external session managment)
  9115. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  9116.     AL = character read or 00h if none available
  9117. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  9118. --------S-14A3-------------------------------
  9119. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  9120.     AH = A3h
  9121.     ES:SI -> ???
  9122. Return: CF clear if successful
  9123.         AX = 5445h ('TE')
  9124.         CX <> FFFFh
  9125.         DX = port number
  9126.     CF set on error
  9127. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  9128. --------S-14A4-------------------------------
  9129. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  9130.     AH = A4h
  9131.     CX = length length of buffer
  9132.     DH = session ID (00h for external session managment)
  9133.     ES:BX -> buffer containing data
  9134. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  9135.     CX = number of bytes actually sent
  9136. SeeAlso: AH=19h,AH=86h,AH=A0"BAPI",AH=A5h"BAPI"
  9137. --------S-14A4-------------------------------
  9138. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  9139.     AH = A4h
  9140.     ???
  9141. Return: ???
  9142. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  9143. --------S-14A5-------------------------------
  9144. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  9145.     AH = A5h
  9146.     CX = length of buffer
  9147.     DH = session ID (00h for external session managment)
  9148.     ES:BX -> buffer for data
  9149. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  9150.     CX = number of bytes actually read
  9151. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  9152. SeeAlso: AH=A7h"BAPI",AX=FF02h
  9153. --------S-14A5-------------------------------
  9154. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  9155.     AH = A5h
  9156.     AL = session number
  9157. Return: ???
  9158. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  9159. --------S-14A6-------------------------------
  9160. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  9161.     AH = A6h
  9162.     DH = session ID (00h for external session managment)
  9163. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  9164. Desc:    generate a short break signal; if data delivery was turned off by the
  9165.       break, wait for the host to turn it on again
  9166. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  9167. --------S-14A6-------------------------------
  9168. INT 14 - Interconnections Inc. TES - DROP A SESSION
  9169.     AH = A6h
  9170.     AL = session number
  9171. Return: AH = status
  9172.         00h successful
  9173.         else error
  9174. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  9175. --------S-14A7-------------------------------
  9176. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  9177.     AH = A7h
  9178.     DH = session ID (00h for external session managment)
  9179. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see AH=A0h"BAPI")
  9180.     CX = number of bytes available for reading
  9181. SeeAlso: AH=A5h"BAPI"
  9182. --------S-14A7-------------------------------
  9183. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  9184.     AH = A7h
  9185.     ???
  9186. Return: ???
  9187. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  9188. --------S-14A8-------------------------------
  9189. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  9190.     AH = A8h
  9191.     AL = 00h no visible response
  9192.     ES:SI -> ASCIZ command
  9193. Return: ???
  9194. --------S-14AF00BXAAAA-----------------------
  9195. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  9196.     AX = AF00h
  9197.     BX = AAAAh
  9198. Return: AX = AF01h if installed
  9199.         BH = protocol type (if BX=AAAAh on entry)
  9200.         01h NetManage TCP/IP
  9201.         BL = version for protocol type (if BX=AAAAh on entry)
  9202. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  9203.       behavior is used to determine whether the newer functions (AH=B0h,
  9204.       AH=B1h,etc) are available
  9205. SeeAlso: AH=A0h"BAPI"
  9206. --------S-14B0-------------------------------
  9207. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  9208.     AH = B0h
  9209.     AL = new state (00h disabled, 01h enabled)
  9210. Return: AH = return code (00h,07h,0Ah) (see AH=A0h"BAPI")
  9211. Note:    disabling the ECM character allows applications to send data which
  9212.       includes the ECM character
  9213. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  9214. --------S-14B1-------------------------------
  9215. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  9216.     AH = B1h
  9217. Return: AH = return code (00h,07h,0Ah) (see AH=A0h"BAPI")
  9218. Desc:    provide a means for the application or terminal emulator to perform
  9219.       the same action normally caused by the ECM character
  9220. SeeAlso: AH=B0h,AH=B2h
  9221. --------S-14B2-------------------------------
  9222. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  9223.     AH = B2h
  9224. Return: AH = return code (00h,07h,0Ah) (see AH=A0h"BAPI")
  9225.     AL = watch flag (00h disabled, 01h enabled)
  9226. Desc:    determine whether the ECM character is enabled
  9227. SeeAlso: AH=B0h,AH=B1h
  9228. --------S-14B3-------------------------------
  9229. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  9230.     AH = B3h
  9231.     AL = direction (00h get, 01h set)
  9232.     DH = session ID (00h for external session managment)
  9233.     DL = configuration item (00h = end-of-line mapping)
  9234.     CX = new configuration item value (if AL=01h)
  9235.         ---if DL=00h---
  9236.         CH = application EOL type (app to Telnet client)
  9237.         01h application will send lone CR
  9238.         02h application will send CR-? pair
  9239.         CL = driver EOL type (Telnet client to Telnet server)
  9240.         01h driver should send CR-NUL pair
  9241.         02h driver should send CR-LF pair
  9242. Return: AH = return code (00h,03h,09h-0Bh) (see AH=A0h"BAPI")
  9243.     ---if AL=00h---
  9244.     CX = configuration item value (see above)
  9245. SeeAlso: AH=B2h
  9246. --------N-14E0-------------------------------
  9247. INT 14 - TelAPI - ???
  9248.     AH = E0h
  9249.     ???
  9250. Return: ???
  9251. SeeAlso: AX=FF00h
  9252. --------S-14E000-----------------------------
  9253. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  9254.     AX = E000h
  9255.     DX = port number (0-3)
  9256. Return: ES:BX -> status block (see below)
  9257. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  9258.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  9259.       the .DRV extension)
  9260. SeeAlso: AX=E006h
  9261.  
  9262. Format of status block:
  9263. Offset    Size    Description
  9264.  00h    BYTE    flag: active (00h no, 01h yes)
  9265.  01h    BYTE    MNP level (2,4,5)
  9266.  02h    BYTE    series ID from remote MNP
  9267.  03h    DWORD    total packets transmitted
  9268.  07h    DWORD    duplicate packets transmitted
  9269.  0Bh    DWORD    maximum speed
  9270.  0Fh    DWORD    total packets received
  9271.  13h    DWORD    duplicate packets received
  9272.  17h    DWORD    maximum speed
  9273. --------S-14E001-----------------------------
  9274. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  9275.     AX = E001h
  9276.     BH = function
  9277.         00h get MNP level
  9278.         01h set MNP level
  9279.         BL = new level (00h none, 02h/04h/05h MNP level N)
  9280.     DX = port number (0-3)
  9281. Return: BL = MNP level
  9282. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  9283. --------S-14E002-----------------------------
  9284. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  9285.     AX = E002h
  9286.     BH = function
  9287.         00h get answer/originate mode
  9288.         01h set mode
  9289.         BL = new mode (00h originate [default], 01h answer)
  9290.     DX = port number (0-3)
  9291. Return: BL = answer/originate mode
  9292. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  9293. --------S-14E003-----------------------------
  9294. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  9295.     AX = E003h
  9296.     BH = function
  9297.         00h get wait ticks
  9298.         01h set wait ticks
  9299.         BL = MNP wait ticks (default 0Eh)
  9300.     DX = port number (0-3)
  9301. Return: BL = wait ticks
  9302. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  9303. --------S-14E004-----------------------------
  9304. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  9305.     AX = E004h
  9306.     BH = function
  9307.         00h get sound level
  9308.         01h set sound level
  9309.         BL = new sound level (00h off, 01h on [default])
  9310.     DX = port number
  9311. Return: BL = sound state
  9312. Desc:    specify whether MX5 should generate beeps after an MNP connection
  9313.       (three high beeps if successful, high then low on connection failure)
  9314. SeeAlso: AX=E002h,AX=E006h
  9315. --------S-14E005-----------------------------
  9316. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  9317.     AX = E005h
  9318. Return: BX = segment of MX5's memory block or 0000h on failure
  9319. Note:    caller must free the returned memory block to complete the uninstall
  9320. SeeAlso: AX=E006h
  9321. --------S-14E006BX0000-----------------------
  9322. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  9323.     AX = E006h
  9324.     BX = 0000h
  9325. Return: BX = 4D58h ('MX') if installed
  9326.         AH = major version
  9327.         AL = minor version
  9328. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  9329. --------S-14E007-----------------------------
  9330. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  9331.     AX = E007h
  9332.     CX = number of ticks to wait
  9333. Return: nothing
  9334. SeeAlso: AX=E006h
  9335. --------N-14E1-------------------------------
  9336. INT 14 - TelAPI - ???
  9337.     AH = E1h
  9338.     ???
  9339. Return: ???
  9340. SeeAlso: AH=E6h,AX=FF00h
  9341. --------N-14E2-------------------------------
  9342. INT 14 - TelAPI - ???
  9343.     AH = E2h
  9344.     ???
  9345. Return: ???
  9346. SeeAlso: AH=E6h,AX=FF00h
  9347. --------N-14E3-------------------------------
  9348. INT 14 - TelAPI - ???
  9349.     AH = E3h
  9350.     ???
  9351. Return: ???
  9352. SeeAlso: AH=E6h,AX=FF00h
  9353. --------N-14E4-------------------------------
  9354. INT 14 - TelAPI - ???
  9355.     AH = E4h
  9356.     ???
  9357. Return: ???
  9358. SeeAlso: AH=E6h,AX=FF00h
  9359. --------N-14E5-------------------------------
  9360. INT 14 - TelAPI - ???
  9361.     AH = E5h
  9362.     ???
  9363. Return: ???
  9364. SeeAlso: AH=E6h,AX=FF00h
  9365. --------N-14E6-------------------------------
  9366. INT 14 - TelAPI - ???
  9367.     AH = E6h
  9368.     ???
  9369. Return: ???
  9370. Note:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  9371. SeeAlso: AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  9372. --------N-14E7-------------------------------
  9373. INT 14 - TelAPI - ???
  9374.     AH = E7h
  9375.     ???
  9376. Return: ???
  9377. SeeAlso: AX=FF00h
  9378. --------N-14E8-------------------------------
  9379. INT 14 - TelAPI - ???
  9380.     AH = E8h
  9381.     ???
  9382. Return: ???
  9383. SeeAlso: AX=FF00h
  9384. --------N-14E9-------------------------------
  9385. INT 14 - TelAPI - ???
  9386.     AH = E9h
  9387.     ???
  9388. Return: ???
  9389. SeeAlso: AX=FF00h
  9390. --------N-14EA-------------------------------
  9391. INT 14 - TelAPI - ???
  9392.     AH = EAh
  9393.     ???
  9394. Return: ???
  9395. SeeAlso: AX=FF00h
  9396. --------N-14EB-------------------------------
  9397. INT 14 - TelAPI - ???
  9398.     AH = EBh
  9399.     ???
  9400. Return: ???
  9401. SeeAlso: AX=FF00h
  9402. --------N-14EC-------------------------------
  9403. INT 14 - TelAPI - ???
  9404.     AH = ECh
  9405.     ???
  9406. Return: ???
  9407. Note:    this function is not supported by the Microdyne TelAPI v3.7
  9408. SeeAlso: AX=FF00h
  9409. --------N-14ED-------------------------------
  9410. INT 14 - TelAPI - ???
  9411.     AH = EDh
  9412.     ???
  9413. Return: ???
  9414. Note:    this function is not supported by the Microdyne TelAPI v3.7
  9415. SeeAlso: AX=FF00h
  9416. --------a-14F0F0-----------------------------
  9417. INT 14 - ASAP v1.0 - ???
  9418.     AX = F0F0h
  9419.     DX = ???
  9420.     ???
  9421. Return: ???
  9422. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  9423.       MicroTalk
  9424. SeeAlso: AX=F0F1h
  9425. --------a-14F0F1DX0000-----------------------
  9426. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  9427.     AX = F0F1h
  9428.     DX = 0000h
  9429. Return: DX = segment of resident code
  9430.        = 0000h if not installed
  9431. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  9432.       MicroTalk
  9433. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  9434. --------S-14F4FF-----------------------------
  9435. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  9436.     AX = F4FFh
  9437.     DX = port (00h-03h)
  9438. Return: CF clear if present
  9439.         AX = 0000h
  9440.     CF set if not present
  9441.         AX <> 0000h
  9442. --------S-14F9-------------------------------
  9443. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  9444.     AH = F9h
  9445.     DX = port (00h-03h)
  9446. --------S-14FA-------------------------------
  9447. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  9448.     AH = FAh
  9449.     DX = port (00h-03h)
  9450. SeeAlso: AH=1Ah,AH=8Ah
  9451. --------S-14FB-------------------------------
  9452. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  9453.     AH = FBh
  9454.     AL = modem control register (see AH=05h)
  9455.     DX = port (00h-03h)
  9456. SeeAlso: AH=05h"SERIAL"
  9457. --------S-14FC-------------------------------
  9458. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  9459.     AH = FCh
  9460.     DX = port (00h-03h)
  9461. Return: AH = RS232 status bits (see AH=00h)
  9462.     AL = character
  9463. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  9464. --------S-14FD02-----------------------------
  9465. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  9466.     AX = FD02h
  9467. Return: CX = number of characters available
  9468. --------N-14FF00-----------------------------
  9469. INT 14 - TelAPI - INSTALLATION CHECK
  9470.     AX = FF00h
  9471. Return: AL = FFh if installed
  9472. SeeAlso: AH=E6h
  9473. --------S-14FF02-----------------------------
  9474. INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
  9475.     AX = FF02h
  9476.     CX = length
  9477.     DX = port (00h-03h)
  9478.     ES:BX -> buffer
  9479. Return: CX = number of characters read
  9480. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh
  9481. --------!------------------------------------
  9482.